Я написал сценарий для добавления всех файлов в папку в zip-файл с использованием кода, адаптированного с сайта www.rondebruin.nl, но я продолжаю получать ошибку «Объектная переменная или с блочной переменной не задано'.VBA copy to zip file возвращает ошибку
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 или имя файла сверху, то это ошибки.
Любые идеи?
Вы получаете допустимые пути из ZipName и FolderName? – justkrys
Да. Я даже попытался использовать непосредственное окно - '? Zipname' и'? Foldername', затем вставляя эти значения обратно в код ... Когда я вставляю фактическое значение, которое он работает, но когда я использую ZipName или FolderName, он не работает ... – GerHick
Итак, откуда он получает ZipName и FolderName? Являются ли они в непосредственном окне из метода, вызывающего эту функцию, или для самой этой функции? Если вы делаете Debug.Print для каждого из них, это дает вам то, что вы ожидаете? – justkrys