Распаковка файла в удаленный каталог в VBA - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть проект, в котором мне нужно извлечь файл из zip, а затем открыть этот файл. Я работал на прошлой неделе с кодом:

 With CreateObject("Shell.Application")
        .Namespace("" & UnZippedFolder).copyhere .Namespace("" & ZipFolder & _ 
                       ZipFile).Items
 End With

Когда я попытался запустить его на этой неделе, я получил кучу ошибок при попытке отладки.

Я перешел от «простого» (выше) к «настолько явному, насколько я могу понять» (ниже). В настоящее время я получаю сообщение об ошибке «Переменная объекта или переменная блока не установлена». с выбранной линией, которая имеет '*' в конце. Я не могу понять, почему выдается эта ошибка или как ее исправить.

Dim WeekNum As Integer
Dim ZipFolder As String
Dim ZipFile As String
Dim UnZippedFile As String
Dim UnZippedFolder As String
Dim objShell
Dim UZipFold
Dim ZipFoldAndFile
If Proceed = False Then Exit Sub

WeekNum = Workbooks("personal.xlsb").Sheets("Dates").Range("WeekNum").Value
ZipFolder = "\\server\path\" ' obfuscated because I must, sorry
ZipFile = "Prefix" & "Week" & WeekNum & " (xlsx 07 format).zip" ' change the 11 to the last 2 digits of the year! 
UnZippedFolder = "\\server\path\" ' obfuscated, again, because I must
UnZippedFile = "Logging_11" & "Week" & WeekNum & " (xlsx 07 format).xlsx"

Set objShell = New Shell
UZipFold = objShell.Namespace("" & UnZippedFolder)
ZipFoldAndFile = objShell.Namespace("" & ZipFolder & ZipFile)

UZipFold.copyhere (objShell.Namespace("" & ZipFolder & ZipFile).Items) '*'

1 Ответ

1 голос
/ 01 ноября 2011

Вы должны объявить ваши пути или все, что передано объекту оболочки, как варианты, а не строки.

Смотрите здесь: http://www.rondebruin.nl/windowsxpunzip.htm

...