今回は今開いているシートをCSVとして保存する方法を紹介したいと思います。
今開いているシートをCSVとして保存する方法
それでは早速コードを紹介します。
今回は例としてC:\ExcelVBA\CSV
にtest_Haribona.csv
という名前で保存しますが、こちらはご自身の環境に合わせて変更してください。
Sub makeActiveSheetToCsv()
Dim TgtSht As Worksheet
Dim TgtFilePath As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'保存先パス
TgtFilePath = "C:\ExcelVBA\CSV\test_Haribona.csv"
'今開いているシートを取得
Set TgtSht = ActiveWorkbook.ActiveSheet
'今開いているシートをコピー(新しいブックに自動でコピーされる)
TgtSht.Copy
'ブックを指定したパスに保存
ActiveWorkbook.SaveAs TgtFilePath, xlCSV
ActiveWorkbook.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
実行すると今開いている(アクティブになっている)シートがTgtFilePath
(保存先)に保存されます。
コードの解説
次にコードのポイントについて解説したいと思います。
大きく分けて3つあるので、それぞれ順に紹介します。
今開いているシートを取得
1つ目は「今開いているシートを取得」です。
'今開いているシートを取得
Set TgtSht = ActiveWorkbook.ActiveSheet
これは文字通り「ブック内で今開いているシート情報を取得する」部分のコードになります。
具体的にどんな感じで取得できるの?
となる方もいると思いますが、例えばtest_1.xlsxのSheet1を開いた状態で上記コードを実行すると、test_1.xlsxのSheet1が取得できる、といった感じです。
シートを新しいブックにコピー
2つ目は「シートを新しいブックにコピー」です。
'今開いているシートをコピー(新しいブックに自動でコピーされる)
TgtSht.Copy
先ほど説明した「TgtSht(今開いているシート)のコピーを作成する」部分のコードになります。
このシートのコピーってどこに作成されるの?
となる方もいると思うので、先にCopy
について軽く触れておきます。
Copy
はその名前の通り、指定したシートをコピーすることができます。
今回だとTgtSht.Copy
としているので、「TgtSht
(今開いているシート)をコピーする」という意味になります。
重要なのがCopy
には引数を指定することができ、指定すると任意の位置へコピーを作成することができます。
例えば以下のような感じです。
'1番目のシートの前にコピーを作成する
TgtSht.Copy Before:=ThisWorkbook.Worksheets(1)
'1番目のシートの後にコピーを作成する
TgtSht.Copy After:=ThisWorkbook.Worksheets(1)
逆に引数を省略することも可能になっており、省略すると自動的に新しいブックにシートのコピーが作成されます。
この性質を利用することで新しいブックとして作成することができる為今回引数を省略している、というわけです。
ファイルをコピー&保存したい時に役立つので、是非覚えておきましょう!
ブックを指定したパスに保存
3つ目は「ブックを指定したパスに保存」です。
'ブックを指定したパスに保存
ActiveWorkbook.SaveAs TgtFilePath, xlCSV
ここでは注意しておきたい所が2点あります。それが「SaveAs
の対象」と「xlCSV」
です。
それぞれ順を追って説明します。
SaveAsの対象
初めにSaveAs
の対象についてですが、今回はActiveWorkbook
を保存対象としています。
なんでActiveWorkbook
にしてるの?
となると思いますが、これはCopy
の性質が関係している為です。
というのも、「Copy
で新しいブックにコピーを作成する」というのを先ほど説明しましたが、Copy
の使用後は自動的にコピーしたシートが選択された状態になります。
つまりCopy
で新しく作成したシートを指定して保存したい場合はActiveWorkbook
を指定することで、新しいブックを保存対象にできるわけです。
xlCSV
次にxlCSV
について説明しますが、そもそもこれが何の引数かいまいちピンと来ない方もいると思います。
この引数についてざっくり説明すると「保存したいファイルの形式」で、ファイルを特定の形式で保存したい場合は指定する必要があります。
※詳しい引数についてはこちらを参照ください。
説明が長くなるので今回は割愛しますが、CSVとして保存する場合はxlCSV
を指定しておけばとりあえずOKです。
まとめ
今回は今開いているシートをCSVとして保存する方法を紹介しました。
シンプルなマクロではありますが、覚えておくと色んな場面で役立つと思うので是非参考にしていただければと思います!
また、このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!
コメント