VBA 把文件夹压缩成ZIP文件

Option Explicit

Sub sbCreateEmptyZIP(prmStrFileNameZip)

    'If the file already exists then delete
    If Len(Dir(prmStrFileNameZip)) > 0 Then Kill prmStrFileNameZip
    
    'Create empty ZIP File
    Open prmStrFileNameZip For Output As #1
    Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
    Close #1
End Sub

Sub sbZIP()
    Dim strFullPath As String
    Dim strParentPath As String
    Dim strFolderName As String
    Dim strFileNameZip As Variant
    Dim objApp As Object

    'Select the folder you want to compress
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Please select a folder you want to compress."
        If .Show = True Then strFullPath = .SelectedItems(1)
    End With
    If strFullPath = "" Then Exit Sub

    'Get the parent path of the selected folder
    strParentPath = Left(strFullPath, InStrRev(strFullPath, "\"))
    'Get the folder name
    strFolderName = Mid(strFullPath, InStrRev(strFullPath, "\") + 1)

    'Set Zip file name
    strFileNameZip = strParentPath & strFolderName & Format(Now, "yyyymmddhmmss") & ".zip"
    
    'Create a new empty Zip
    Call sbCreateEmptyZIP(strFileNameZip)
    
    'Copy the files to the compressed folder
    Set objApp = CreateObject("Shell.Application")
    objApp.Namespace(strFileNameZip).CopyHere objApp.Namespace(strFullPath)
    On Error Resume Next

    MsgBox "The ZIP File has been created." & vbCrLf & strFileNameZip

End Sub

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值