みなさん、こんにちは!
ちゃんとエクセルも研究続けていますタカハシ(@ntakahashi0505)です。
皆さん、CSVファイルって使いますか?
仕事をしていると、けっこう出くわす機会が多いですよね…。
Googleアナリティクスやキーワードプランナーなど世の中にある様々なサービスや管理画面からデータをエクスポートするとき、CSVはよく見かけるファイル形式です。
相性が良いのでエクセルを使って開いたり処理をしたりすることが多いと思いますが、開いてコピー&ペーストして、集計して…いつものお仕事で同じ作業をするの、面倒ですよね。
そんな時はVBAで自動化しちゃいましょう!
ということで、エクセルVBAでCSVファイルを取り込む方法について、初心者向けに丁寧に解説をしていきたいと思います。
初回の今回はエクセルVBAでCSVファイル取り込む際の準備編ということで、そもそもCSVファイルとは何か、エクセルで開く際の注意点についてお伝えします。
では行ってみましょう!
CSVファイルとは何か?
CSVは「Comma-Separated Values」の頭文字をとったもので、ファイル形式の種類の一つです。
CSVとは何かといいますと
CSVとは、データ形式およびファイル形式の一つで、項目をカンマ(”,”)で区切って列挙したもの。複数の項目をレコードとしてまとめる場合は、改行でレコードの区切りを表す。
多くの表計算ソフトやデータベースソフトなどが独自のファイル形式とともに対応しており、異なるソフトウェア間でデータを交換する際などによく利用される。テキスト(文字)データおよびテキストファイルの一種であるため、テキストエディタやワープロソフトなどでテキスト文書として開いて閲覧・編集することもできる。
引用:IT用語辞典
CSVがエクセル専用の形式と思われているのであれば、それは違いますね。
まとめますと
- CSVファイルはテキストファイル
- データはカンマ区切り
- 複数の項目をまとめたレコードは改行区切り
- ソフトウェア間のデータ交換によく利用される
となります。
CSVファイルを開いてみる
実際にサンプルをテキストエディタで開いてみますと
まさに、各データはカンマ区切り、それを複数まとめたレコードは改行区切りとなっていますね。
このCSVファイルの作りについてはとても重要なので、よく覚えておいて頂ければと思います。
先ほどのCSVファイルをエクセルで開くと
とこのようにキレイにセルに収まってくれますね。
しかしCSVファイルが1つ2つだったらこれでいいのですが、たくさんある場合はかなり時間がかかります。
CSVの取り込みを自動化できれば、CSVを次々と自動で取り込んで、じゃんじゃん色々な処理をすることできますよね。
CSVファイルをエクセルで普通に開いてはいけない理由
では、CSVファイルを開くVBAプログラムを組んでみましょう。
先ほどの通り、CSVファイルは普通にエクセルで開くことができますので
[vb]
Sub openCSV()
Workbooks.Open “C:\Users\Noriaki\Dropbox\40_ブログ\vba-csv\test\ラーメン店アンケート.csv”
End Sub
[/vb]
このようにしたくなります。
ちゃんと動くのですが、このやり方はうまくいかないケースがあります。
先頭のゼロが削除されてしまう
例えば、CSVファイルがこのような場合です。
各レコードの最初の項目である「No」ですが、001,002,…といったように、0で始まる3ケタで揃えられていますよね。
これを上記プログラムで開くと
こうなってしまいます。エクセルがお利口すぎて、開いたときに各Noの冒頭の0が削除されてしまうのです。
3ケタで揃えたいからわざわざ0をつけているのに…といったことが起こり得ます。
勝手に日付として認識されてしまう
また、別の例を見てみましょう。
このようなCSVの場合です。
各レコードの最初の項目「No」が01-01,01-02,…といったように、二つの数列がハイフンで連結されているような形になっています。
これをWorkbook.Openで開きますと
…まさかの日付に変換されてしまいます!?エクセル、お利口すぎて我々の想定をはるかに超えてしまいました。
エクセルで普通にCSVを開く場合、上記のようなデータの勝手な変換がエクセルによって行われてしまっている場合がありますので、ぜひ取り扱う際は注意して下さい。
同じ理由でWorkbook.Openで開いた場合、正しく取得されない可能性がありますので、別の方法でCSVを読み込まなくてはいけないのです。
まとめ
今回はエクセルVBAでCSVファイルを取り込む際の超導入編として、CSVファイルとは何か、またWordbook.Openが使えないのはエクセルがお利口すぎるから、などといったことについてお伝えしました。
エクセルVBAによって業務ツールを作成していくのであれば、CSVファイルを取り込むという処理はそれはもうかなりの頻度で利用できるものになります。
初歩的な部分から、いろいろなパターンに至るまで丁寧に解説をしていきたいと思いますので、しっかりとご理解頂けると良いのではないかと思います。
次回はこちらの記事で、最も簡単なパターンについてお伝えしています。
合わせてご覧くださいね!