VBA—压缩文件夹成一个ZIP压缩包

 应用背景:上篇文章说到如果在一项工作中需要自动生成很多文件,然后再压缩 ,然后再进行上传等操作。每次都手动压缩会很麻烦,所以可以加一点代码进行自动压缩Zip文件。

遗留问题:如果只能上传ZIP文件,无法使用rar文件,那么该怎么办呢?

1.在VBE内新建一个模块,插入以下代码。

Sub NewZip(F_Path)
'Create empty Zip File
    If Len(Dir(F_Path)) > 0 Then Kill F_Path
    Open F_Path For OuF_tput As #1
    Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
    Close #1
End Sub

  Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)

这一段貌似是打印机的编码转换,意义不是很清楚;

整个newzip()函数的功能就是新建一个zip文件,然后再把指定的文件copy到这里来


2.然后再写一个子函数,如下所示,即可完成自动压缩ZIP的功能。

Sub ZiP()
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Please choose a Job-ID-folder"
If .Show = True Then Path_1 = .SelectedItems(1)
    End With
If Path_1 = "" Then Exit Sub

mark = InStrRev(Path_1, "\")
path_2 = Left(Trim(Path_1), mark)                        'For creating ZIP file

strDate = Format(Now, " yy-mmm-dd h-mm-ss")
FileNameZip = path_2 & "InputZip " & strDate & ".zip"
NewZip (FileNameZip)                                     'Create a new empty Zip
Set oApp = CreateObject("Shell.Application")             'Copy the files to the compressed folder
oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(Path_1)
On Error Resume Next

MsgBox "You can upload the ZIPfile " & FileNameZip

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值