Закрыть скопированный лист при экспорте в CSV - PullRequest
0 голосов
/ 23 сентября 2011

Я пытаюсь сохранить каждый лист таблицы Excel в файлы CSV. Следующий скрипт выполняет эту работу. Предполагается, что строка .Parent.Close savechanges:=False закрывает созданный рабочий лист, но при отсутствии комментария скрипт останавливается после первого листа. Если я прокомментирую строку, все листы будут обработаны.

Dim newWks As Worksheet
Dim wks As Worksheet

For Each wks In ActiveWorkbook.Worksheets
wks.Copy 'to a new workbook
Set newWks = ActiveSheet
With newWks
.SaveAs Filename:="C:\home\tmp\base\" & wks.Name & ".txt", FileFormat:=xlTextWindows
.Parent.Close savechanges:=False
End With
Next wks

MsgBox "done with: " & ActiveWorkbook.Name

1 Ответ

1 голос
/ 24 сентября 2011

Вы закрываете активную книгу. Если вы хотите закрыть вновь созданный объект, сделайте что-то вроде этого (проверил, и у меня это работает):

Dim newWkb As Workbook
Dim wks As Worksheet

For Each wks In ActiveWorkbook.Worksheets
  wks.Copy 'to a new workbook
  Set newWkb = ActiveWorkbook
  With newWkb
    .SaveAs Filename:="C:\home\tmp\base\" & wks.Name & ".txt", FileFormat:=xlTextWindows
    newWkb.Close savechanges:=False
  End With
Next wks

MsgBox "done with: " & ActiveWorkbook.Name
...