zoukankan      html  css  js  c++  java
  • VBA文件处理

    Option Explicit
    
    ' ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽
    ' Excel对象
    ' △△△△△△△△△△△△△△△△△△
    
    ' Open
    Public Function FileOpen_ByExcel(ByVal FileName As String, ByRef Target As Workbook) As Boolean
    
        On Error GoTo OpenFileError
        
        Set Target = Workbooks.Open(FileName:=FileName, ReadOnly:=False)
        FileOpen_ByExcel = True
        Exit Function
        
    OpenFileError:
        FileOpen_ByExcel = False
        
    End Function
    
    ' Save
    Public Function FileSave_ByExcel(ByVal FileName As String, ByVal Target As Workbook) As Boolean
    
        On Error GoTo SaveFileError
        
        If FileName = "" Then
            Target.Save
        Else
            Target.SaveAs FileName:=FileName
        End If
        FileSave_ByExcel = True
        Exit Function
        
    SaveFileError:
        FileSave_ByExcel = False
        
    End Function
    
    
    ' Close
    Public Function FileClose_ByExcel(ByVal Target As Workbook) As Boolean
    
        On Error GoTo FileCloseError
        
        Target.Close savechanges:=False
        FileClose_ByExcel = True
        Exit Function
        
    FileCloseError:
        FileClose_ByExcel = False
        
    End Function
    
    
    
    ' ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽
    ' FileSystemObject
    ' △△△△△△△△△△△△△△△△△△
    
    ' Folder
    ' CreateFolder
    Public Function FolderCreate_ByFSO(ByVal FolderName As String, ByVal DeleteFlg As Boolean) As Boolean
    
        Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        
        On Error GoTo FolderCreateError
        
        If FSO.FolderExists(FolderName) Then
            If DeleteFlg Then
                FSO.DeleteFolder (FolderName)
            Else
                Set FSO = Nothing
                FolderCreate_ByFSO = True
                Exit Function
            End If
        End If
        
        Dim ParentFolderName As String
        ParentFolderName = FSO.GetParentFolderName(FolderName)
        If FSO.FolderExists(ParentFolderName) = False Then
            If FolderCreate_ByFSO(ParentFolderName, False) = False Then
                GoTo FolderCreateError
            End If
        End If
        
        FSO.CreateFolder (FolderName)
        Set FSO = Nothing
        FolderCreate_ByFSO = True
        Exit Function
        
    FolderCreateError:
        Set FSO = Nothing
        FolderCreate_ByFSO = False
        
    End Function
    
    ' CreateFile
    Public Function FileCreate_ByFSO(ByVal FileName As String, ByVal DeleteFlg As Boolean) As Boolean
    
        Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        
        On Error GoTo FileCreateError
        
        If FSO.FileExists(FileName) Then
            If DeleteFlg Then
                FSO.DeleteFile (FileName)
            Else
                Set FSO = Nothing
                FileCreate_ByFSO = True
                Exit Function
            End If
        End If
        
        Dim ParentFolderName As String
        ParentFolderName = FSO.GetParentFolderName(FileName)
        If FSO.FolderExists(ParentFolderName) = False Then
            If FolderCreate_ByFSO(ParentFolderName, False) = False Then
                GoTo FileCreateError
            End If
        End If
        
        FSO.CreateTextFile (FileName)
        Set FSO = Nothing
        FileCreate_ByFSO = True
        Exit Function
        
    FileCreateError:
        Set FSO = Nothing
        FileCreate_ByFSO = False
        
    End Function
    '
    '' OpenTextFile
    'Public Function OpenTextFile_ByFSO(ByVal FileName As String) As String
    '
    '    Const ForReading As Integer = 1
    '    Const CreateFlgFalse As Boolean = False
    '
    '    Dim FSO As Object, TextFile As Object, TextStr As String
    '    Set FSO = CreateObject("Scripting.FileSystemObject")
    '
    '    On Error GoTo OpenTextFileError
    '
    '    Set TextFile = FSO.OpenTextFile(FileName, ForReading, CreateFlgFalse)
    '    TextStr = TextFile.Readall
    '
    '    TextFile.Close
    '    Set FSO = Nothing
    '
    '    OpenTextFile_ByFSO = TextStr
    '    Exit Function
    '
    'OpenTextFileError:
    '
    '    TextFile.Close
    '    Set FSO = Nothing
    '    OpenTextFile_ByFSO = ""
    '
    'End Function
    '
    '' OpenTextFile
    'Public Function WriteTextFile_ByFSO(ByVal FileName As String, ByVal Buffer As String) As Boolean
    '
    '    If FileCreate_ByFSO(FileName, True) = False Then
    '        WriteTextFile_ByFSO = False
    '        Exit Function
    '    End If
    '
    '    Const ForWriting As Integer = 2
    '    Const CreateFlgTrue As Boolean = True
    '
    '    Dim FSO As Object, TextFile As Object
    '    Set FSO = CreateObject("Scripting.FileSystemObject")
    '
    '    On Error GoTo OpenTextFileError
    '
    '    Set TextFile = FSO.OpenTextFile(FileName, ForWriting, CreateFlgTrue)
    '    TextFile.Write (Buffer)
    '
    '    TextFile.Close
    '    Set FSO = Nothing
    '
    '    WriteTextFile_ByFSO = True
    '    Exit Function
    '
    'OpenTextFileError:
    '
    '    TextFile.Close
    '    Set FSO = Nothing
    '    WriteTextFile_ByFSO = False
    '
    'End Function
    
    Public Function OpenTextFile_ByADODBStream(FileName As String) As String
        Dim FileBody As String
     
        Dim ADODBStream As Object
        Set ADODBStream = CreateObject("ADODB.Stream")
                
        With ADODBStream
            .Type = 1
            .Mode = 3
            .Open
            .LoadFromFile FileName
            .Position = 0
            .Type = 2
            .Charset = "utf-8"
            FileBody = .ReadText
            .Close
        End With
        
        Set ADODBStream = Nothing
        
        OpenTextFile_ByADODBStream = FileBody
         
    End Function
    
    ' WriteTextFile_ByADODBStream
    Public Function WriteTextFile_ByADODBStream(ByVal OutFileName As String, ByVal Buffer As String) As Boolean
    
        If FileCreate_ByFSO(OutFileName, True) = True Then
        
            Dim ADODBStream As Object
            Set ADODBStream = CreateObject("ADODB.Stream")
                
            '
            With ADODBStream
                .Type = 2
                .Charset = "utf-8"
                .Open
                .WriteText Buffer, 1
                .SaveToFile OutFileName, 2
                .Close
            End With
            
            Set ADODBStream = Nothing
            WriteTextFile_ByADODBStream = True
        Else
            WriteTextFile_ByADODBStream = False
        End If
        
    End Function



    '
    ' log
    '
    Public Function WriteLog(ByVal LogFilePath As String, ByVal msg As String)
        Dim FSO As Object, LOG As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
       
        '
        If FSO.FileExists(LogFilePath) = False Then
            FSO.CreateTextFile (LogFilePath)
        End If
       
        '
        Set LOG = FSO.OpenTextFile(LogFilePath, 8)
        '
        LOG.WriteLine Now & vbTab & msg
       
        Set LOG = Nothing
        Set FSO = Nothing
    End Function
  • 相关阅读:
    redis应用场景
    java.lang.IllegalArgumentException: Result Maps collection already contains value for xxx
    Java问题解决:Java compiler level does not match the version of the installed Java project facet.
    win10 安装Oracle 11g release 2
    Oracle 11G Client客户端安装
    Oracle分页查询排序数据重复问题
    Mysql 函数使用记录(三)——UNIX_TIMESTAMP() 、UNIX_TIMESTAMP(date)
    PL/SQL Developer过期解决方法
    PL/SQL Developer登录出现——Using a filter for all users can lead to poor performance!
    Oracle Single-Row Functions(单行函数)——NULL-Related Functions
  • 原文地址:https://www.cnblogs.com/WillYang/p/4088791.html
Copyright © 2011-2022 走看看