Архивирование файла с использованием Excel VBA создает пустой архив - PullRequest
0 голосов
/ 22 мая 2018

Я следовал Уроку Рона де Брюинса по архивированию файла с помощью 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.

...