我使用这个代码到一个文件夹中的所有文件压缩到一个新创建.zip
文件:邮编所有文件夹中,除了ZIP档案本身
Dim FileNameZip, FolderName
Dim filename As String, DefPath As String
Dim oApp As Object
(defining all paths needed)
'Create empty Zip File
NewZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
'Copy the files to the compressed folder
oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(FolderName).items
'Keep script waiting until Compressing is done
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).items.Count = oApp.Namespace(FolderName).items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop
这作品没有问题只要我目标文件夹与我的文件所在的文件夹不同。
但是我有一个问题当我尝试从一个文件夹采取的所有文件,把它们放进.zip
,并在同一个文件夹中产生的档案 - 它创建存档,然后尝试把它进入其本身,当然失败了。
我正在寻找一种方法来压缩文件夹中除了这个新创建的文件之外的所有文件。
我看了这里:https://msdn.microsoft.com/en-us/library/office/ff869597.aspx但这看起来很符合Outlook,我不知道如何将它应用到Windows文件夹。
也许您在创建新的zip文件之前存储这些项目? – PatricK
下面的一些很好的答案是基于VBA的,但请注意VBA将花费很长时间来运行,因为所有文件操作都会执行,特别是归档。你可能想考虑脱壳到命令行并让批处理文件执行此操作http://stackoverflow.com/questions/17546016/how-can-you-zip-or-unzip-from-the-command-prompt-只使用windows-built-ca-VBA环境将在这个完成时保持响应。 –