• ベストアンサー

エクセルVBA【ワークシートのコピー】について

以下のVBA記述で、とあるエクセルファイルのシートをCSV化しようとしております。記述の場合、すべてのワークシートが対象となっていますが、10個くらいあるWorkSheetの【sheets(8)】のみを対象としたいのですが、どのようにしたら良いのでしょうか? お手数ですがご教授下さい。 Sub test() Dim sh As Worksheet Dim fname As String Application.ScreenUpdating = False For Each sh In ActiveWorkbook.Worksheets fname = "C:\temp\" & sh.Name & ".csv" sh.Copy With ActiveWorkbook .SaveAs Filename:=fname, FileFormat:=xlCSV .Close savechanges:=False End With Next sh Application.ScreenUpdating = True End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

>【sheets(8)】のみを対象としたいのですが 左から8番目のシートという理解でよろしいですか? Sub test() Dim sh As Worksheet Dim fname As String Application.ScreenUpdating = False Sheets(8).Activate fname = "C:\temp\" & ActiveSheet.Name & ".csv" ActiveSheet.Copy With ActiveWorkbook .SaveAs Filename:=fname, FileFormat:=xlCSV .Close savechanges:=False End With Application.ScreenUpdating = True End Sub

yopppy
質問者

お礼

ありがとうございます。 動作確認できました。 シンプルだしこれでいくことにします。 お手数おかけしました。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。KenKen_SP です。 こんな感じの方が楽かもしれません。 Option Explicit Sub Sample()   ' 選択した(作業グループ)シートを CSV ファイルとして保存する      Dim Wb     As Workbook   Dim Sh     As Worksheet   Dim strBasename As String      Set Wb = ActiveWorkbook   With Wb     strBasename = .FullName     strBasename = Left$(strBasename, InStrRev(strBasename, ".") - 1)   End With   Application.ScreenUpdating = False   ActiveWindow.SelectedSheets.Copy   For Each Sh In ActiveWorkbook.Worksheets     Sh.SaveAs Filename:=strBasename & "(" & Sh.Name & ").csv", _          FileFormat:=xlCSV   Next Sh   ActiveWorkbook.Close SaveChanges:=False   Wb.Activate   Set Wb = Nothing End Sub

noname#22222
noname#22222
回答No.1

ほとんど、質問者が書かれたコードのまんまです。 Option Explicit Private Sub CommandButton1_Click()   SaveToCSV 2 End Sub Public Sub SaveToCSV(ByVal intIndex As Integer)   Dim sh As Worksheet   Dim fname As String   Application.ScreenUpdating = False   Set sh = ActiveWorkbook.Worksheets(intIndex)   fname = "C:\temp\" & sh.Name & ".csv"   sh.Copy   With ActiveWorkbook     .SaveAs Filename:=fname, FileFormat:=xlCSV     .Close savechanges:=False   End With   Application.ScreenUpdating = True End Sub ※Excel は、操作したことがない門外漢です。 ※一応、CSVファイルは作成されました。

yopppy
質問者

お礼

ありがとうございました。 教えて頂いた内容でできました。 自分で調べろといわれてしまいそうですが、 (ByVal intIndex As Integer)どのような宣言になるのでしょうか?

関連するQ&A