Я следовал Уроку Рона де Брюинса по архивированию файла с помощью Excel VBA.Вот код, который я использую:
Private Sub ZipCSVFile()
' FileNameCSV contains the full path to the file
FileNameZip = FileNameCSV & ".zip"
NewZip (FileNameZip)
Set objShell = CreateObject("Shell.Application")
objShell.Namespace(FileNameZip).CopyHere FileNameCSV
Application.Wait (Now + TimeValue("0:00:01"))
Kill FileNameCSV
End Sub
Private Sub NewZip(sPath)
If Len(Dir(sPath)) > 0 Then Kill sPath
Open sPath For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
End Sub
При запуске этого кода мне будет представлен zip-файл, который выглядит совершенно пустым.
Один странный обходной путь, который я нашел, состоял в том, чтобы сохранить CSV на рабочем столе и вызвать .CopyHere
с Dir(FileNameCSV)
вместо FileNameCSV
.
Увеличение времени ожидания не помогает, и, возможно, этоСтоит отметить, что файл CSV был сохранен на диск на более ранней стадии сценария VBA.