【VBA】一つのExcelファイル内の複数シートから任意の値を取得して一つのCSVに集約する
関連記事も合わせてご覧ください。
・【VBA】Excelマクロの基本的な使い方
・【VBA】列番号をアルファベットに変換する
サンプルコード
Sub main() Dim exApp As Object Dim exWkb As Object Dim wsCurrent As Object Dim sAddress As String Dim sName As String Dim sTel As String ' Excel起動 Set exApp = CreateObject("Excel.Application") ' CSVファイル作成 Open "sample.csv" For Output As #1 ' CSVファイルにヘッダーを出力 Print #1, "住所, 氏名, 電話番号" Set exWkb = exApp.Workbooks.Open(Filename:="sample.xlsx", ReadOnly:=True) ' シートの数だけ処理を繰り返す For i = 1 To exWkb.Worksheets.Count ' i番目のシートを処理対象とする Set wsCurrent = exWkb.Worksheets(i) ' 指定セルからテキストを取得 sAddress = wsCurrent.Range("A1").Text sName = wsCurrent.Range("B1").Text sTel = wsCurrent.Range("C1").Text ' CSVファイルに書き込み Print #1, sAddress; ","; sName; ","; sTel; Next ' Excelを閉じる exWkb.Close ' Excel終了 exApp.Quit ' CSVファイルを閉じる Close #1 End Sub
補足
「特定のシートだけ処理したい or 処理したくない」といった場合にはシート名などで処理分岐が可能。例として以下の通り。
' シート名が「backup」の場合は処理対象外とする If (wsCurrent.Name <> "backup") Then ~~~~~~~~~~ End If