VBA处理压缩文件示例

分类:代码, 博客 标签:

Excel中有时需要对压缩文件进行处理,如从网上下载了一个压缩文件之后(如何通过VBA从网上下载文件),需要解压到某个文件夹,如Rar和7Zip等压缩文件时需要用到压缩程序的CommandLine语句,这样需要本地机器安装有相应的压缩程序。而对于一般的Zip文件和Cab文件,可以使用Windows自带的压缩程序来处理,VBA通过创建Shell.Application对象来完成处理压缩文件的功能。这里水文工具集介绍一个VBA处理压缩文件的示例,具体源文件如下:

Sub Unzip_Ex()
    Dim FSO As Object
    Dim oApp As Object
    Dim Fname As Variant
    Dim FileNameFolder As Variant
    Dim DefPath As String
    Dim strDate As String
 
    Fname = Application.GetOpenFilename _
  (filefilter:="Zip Files (*.zip), *.zip", _
     MultiSelect:=False)
    If Fname = False Then
        ' do nothing
    Else
        ' 新文件夹的根目录
        ' 你也可以使用 DefPath = "C:\Users\HUP\test\"
        DefPath = Application.DefaultFilePath
        If Right(DefPath, 1) <> "\" Then
            DefPath = DefPath & "\"
        End If
 
        ' 创建新的文件夹名称
        strDate = Format(Now, " dd-mm-yy h-mm-ss")
        FileNameFolder = DefPath & "MyUnzipFolder " & strDate & "\"
 
        ' 在DefPath下创建文件夹
        MkDir FileNameFolder
 
        ' 将文件解压到新创建的文件夹下
        Set oApp = CreateObject("Shell.Application")
 
        oApp.Namespace(FileNameFolder).CopyHere  oApp.Namespace(Fname).items
 
        ' 如果你只需要解压一个文件,可以使用:
        'oApp.Namespace(FileNameFolder).CopyHere _
         'oApp.Namespace(Fname).items.Item("test.txt")

        MsgBox "You find the files here: " & FileNameFolder
 
        On Error Resume Next
        Set FSO = CreateObject("scripting.filesystemobject")
        FSO.deletefolder Environ("Temp") & "\Temporary Directory*", True
    End If
End Sub


分类:代码, 博客 标签:

发表评论

You must be logged in to post a comment.