我已经编写了一个脚本,使用改编自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名称或上面的文件名,则会出错。
有什么想法吗?
答案 0 :(得分:0)
使用Shell.Application
对象时,应将所有路径和文件名作为变体传递,而不是字符串。
如果你看看罗恩的代码,你就会看到他的所作所为。
正如他在该页面上所说:
注意:请勿在代码中将FileNameZip作为字符串变暗 例子。这必须是Variant,如果你改变它,代码就不会 工作