【VBA】エクセルシートのデータをcsvファイルとして自動保存する方法!

f:id:yshgs_elec:20210210213107j:plain

データ収集や加工をVBAでおこなった後、そのデータをcsvファイルとして保存したいことってあります。

 

この記事にたどり着いた人は、

「ぜっかく自動でデータ収集したのに、最後のcsv化するところだけは手動でやるなんてめんどくさい!」

なんて思っているのではないでしょうか?

 

というわけでこの記事では、そんな状況で役に立つ、

【エクセルシートのデータをcsvファイルとして保存する方法】

をご紹介していきます。

 

処理の最後にこの記事で紹介するVBAコードを付け加えるだけです。

非常に簡単ですので、ぜひ最後までご覧ください。

 

それでは早速やっていきましょう!

スポンサーリンク

紹介するスキルの概要説明

今回は、以下の画像ように、あるマクロ有効ブック(.xlsmファイル)に記入されているデータを、csvファイルとして出力していきます。

f:id:yshgs_elec:20210210210804j:plain

また、このデータはdata1という名前のシートに記入されています。

f:id:yshgs_elec:20210210210238j:plain

今回はこのデータを、シート名と同じ名前のcsvファイルとして出力していくことにします。

つまりこのファイルをcsv化するとdata1.csvというファイルになるということです。

 

事前説明はこのくらいにして、実際にコードを書いていきましょう。

スポンサーリンク

シートをcsvファイルとして出力する方法

早速ですが、以下がシート内のデータをcsvファイルとして出力するVBAコードです。

◆シート内のデータをcsvファイルとして出力するVBAコード

Sub make_csv1()
    '変数の型を宣言
    Dim new_file As Variant
    '現在のシート名を記憶させる(csvファイル名として使う)
    new_file = ActiveSheet.Name
    'csvファイルとして保存する
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & new_file & ".csv", _
    FileFormat:=xlCSV, CreateBackup:=False
    'ファイルを閉じる
    ActiveWorkbook.Close
End Sub

基本的にはそれぞれの処理でコメントをつけておりますので、何をやっているかはなんとなくイメージできるはずです。

 

なお、最後のActiveWorkbook.Closeはなくても問題ありませんが、つけてないと私は結構混乱するのでつけるようにしています。

(気になる方ははずして実行してみてください。きっと混乱します。)

スポンサーリンク

サンプルコードの実行結果の確認

コードが記述できたら、最後に実行してみましょう。

 

まずは実行前の状況確認です。

実行前は、以下のようにコードを記述してある(データ集計をした)ファイルだけが保存されている状態です。

f:id:yshgs_elec:20210210211705j:plain

このファイルを開いて、

開発⇒マクロ⇒さっき書いたコードを選択⇒実行

でマクロを実行します。

 

すると以下の画像のように何もないエクセル画面が表示されるはずです。

f:id:yshgs_elec:20210210211817j:plain

この画面は閉じてもらって先ほどのフォルダの中身を確認してみましょう。

f:id:yshgs_elec:20210210212042j:plain

もともとのファイルと同じフォルダ内に、新たにcsvファイルが保存されていますね。

(ファイル名がもとのファイルのシート名に使われていたものと同じになっていることをご確認ください。)

 

新たにできたファイルの中身を開いてみると、以下のように最初にお見せしたデータと全く同じものが入っていますね。

f:id:yshgs_elec:20210210212154j:plain

というわけで、今回のコードを実行することで、しっかりとcsvファイルとして自動保存できることが確認できました。

スポンサーリンク

おわりに

というわけで今回はシート上のデータをcsvファイルとして自動保存する方法をご紹介しました。

大量のデータをcsvとして出力する際にぜひご活用ください。

 

このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

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