【Excel VBA】今開いているシートをCSVとして保存する方法を紹介【SaveAs】

Excel
スポンサーリンク

今回は今開いているシートをCSVとして保存する方法を紹介したいと思います。

スポンサーリンク

今開いているシートをCSVとして保存する方法

それでは早速コードを紹介します。
今回は例としてC:\ExcelVBA\CSVtest_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(保存先)に保存されます。

今開いているシートをCSVとして保存する方法_1
今開いているシートをCSVとして保存する方法_2
今開いているシートをCSVとして保存する方法_3
スポンサーリンク

コードの解説

次にコードのポイントについて解説したいと思います。
大きく分けて3つあるので、それぞれ順に紹介します。

今開いているシートを取得

1つ目は「今開いているシートを取得」です。

'今開いているシートを取得
Set TgtSht = ActiveWorkbook.ActiveSheet

これは文字通り「ブック内で今開いているシート情報を取得する」部分のコードになります。

具体的にどんな感じで取得できるの?

となる方もいると思いますが、例えばtest_1.xlsxSheet1を開いた状態で上記コードを実行すると、test_1.xlsxSheet1が取得できる、といった感じです。

シートを新しいブックにコピー

2つ目は「シートを新しいブックにコピー」です。

'今開いているシートをコピー(新しいブックに自動でコピーされる)
TgtSht.Copy

先ほど説明した「TgtSht(今開いているシート)のコピーを作成する」部分のコードになります。

このシートのコピーってどこに作成されるの?

となる方もいると思うので、先にCopyについて軽く触れておきます。

Copyはその名前の通り、指定したシートをコピーすることができます。
今回だとTgtSht.Copyとしているので、「TgtSht(今開いているシート)をコピーする」という意味になります。

重要なのがCopyは引数を指定することができ、指定すると任意の位置へコピーを作成することができます
例えば以下のような感じです。

'1番目のシートの前にコピーを作成する
TgtSht.Copy Before:=ThisWorkbook.Worksheets(1)

'1番目のシートの後にコピーを作成する
TgtSht.Copy After:=ThisWorkbook.Worksheets(1)

逆に引数を省略することも可能になっており、省略すると自動的に新しいブックにシートのコピーが作成されます

コードの解説_シートを新しいブックにコピー_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に関する記事を不定期で投稿していますので、是非ご覧ください!

コメント

タイトルとURLをコピーしました