VBA复制到zip文件返回错误

时间:2016-03-08 22:17:54

标签: vba zip

我已经编写了一个脚本,使用改编自www.rondebruin.nl的代码将文件夹中的所有文件添加到zip文件中,但是我一直收到错误'对象变量或者没有设置块变量& #39;

Function ZipDir(FolderName As String, ZipName As String) As String
'Copied from: http://www.rondebruin.nl/win/s7/win001.htm
Dim FileNameZip ', FolderName
Dim strDate As String, DefPath As String
Dim oApp As Object

'Create empty Zip File
NewZip ZipName

Set oApp = CreateObject("Shell.Application")
'Copy the files to the compressed folder
oApp.Namespace(ZipName).CopyHere oApp.Namespace(FolderName).items '<<ERROR HERE

'Keep script waiting until Compressing is done
On Error Resume Next
Do Until oApp.Namespace(ZipName).items.Count = _
    oApp.Namespace(FolderName).items.Count
    Application.Wait (Now + TimeValue("0:00:01"))
Loop
On Error GoTo 0

MsgBox "You find the zipfile here: " & ZipName
End Function

oApp.Namespace(ZipName).CopyHere oApp.Namespace(FolderName).items行上的代码错误。但是,如果我明确声明源文件和目标文件,如下所示:oApp.Namespace("C:\MyZip.Zip").CopyHere "C:\Temp\MyFile.pdf"

如果我更改了zip名称或上面的文件名,则会出错。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用Shell.Application对象时,应将所有路径和文件名作为变体传递,而不是字符串。

如果你看看罗恩的代码,你就会看到他的所作所为。

正如他在该页面上所说:

  

注意:请勿在代码中将FileNameZip作为字符串变暗   例子。这必须是Variant,如果你改变它,代码就不会   工作