0

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
4

1 に答える 1

1

アクティブなワークブックを閉じています。新しく作成されたオブジェクトを閉じたい場合は、次のようにします(テストしたところ、うまくいきました)。

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
于 2011-09-23T20:54:30.930 に答える