CSVとは何か?そしてエクセルでCSVファイルを扱うときの注意点


stretch

photo credit: IMG_1876.JPG via photopin (license)

みなさん、こんにちは!
ちゃんとエクセルも研究続けていますタカハシ(@ntakahashi0505)です。

皆さん、CSVファイルって使いますか?

仕事をしていると、けっこう出くわす機会が多いですよね…。

Googleアナリティクスやキーワードプランナーなど世の中にある様々なサービスや管理画面からデータをエクスポートするとき、CSVはよく見かけるファイル形式です。

相性が良いのでエクセルを使って開いたり処理をしたりすることが多いと思いますが、開いてコピー&ペーストして、集計して…いつものお仕事で同じ作業をするの、面倒ですよね。

そんな時はVBAで自動化しちゃいましょう!

ということで、エクセルVBAでCSVファイルを取り込む方法について、初心者向けに丁寧に解説をしていきたいと思います。

初回の今回はエクセルVBAでCSVファイル取り込む際の準備編ということで、そもそもCSVファイルとは何かエクセルで開く際の注意点についてお伝えします。

では行ってみましょう!

スポンサーリンク

CSVファイルとは何か?

CSVは「Comma-Separated Values」の頭文字をとったもので、ファイル形式の種類の一つです。

CSVとは何かといいますと

CSVとは、データ形式およびファイル形式の一つで、項目をカンマ(”,”)で区切って列挙したもの。複数の項目をレコードとしてまとめる場合は、改行でレコードの区切りを表す。

多くの表計算ソフトやデータベースソフトなどが独自のファイル形式とともに対応しており、異なるソフトウェア間でデータを交換する際などによく利用される。テキスト(文字)データおよびテキストファイルの一種であるため、テキストエディタやワープロソフトなどでテキスト文書として開いて閲覧・編集することもできる。

引用:IT用語辞典

CSVがエクセル専用の形式と思われているのであれば、それは違いますね。

まとめますと

  • CSVファイルはテキストファイル
  • データはカンマ区切り
  • 複数の項目をまとめたレコードは改行区切り
  • ソフトウェア間のデータ交換によく利用される

となります。

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ファイルがこのような場合です。

CSVファイルの例1

各レコードの最初の項目である「No」ですが、001,002,…といったように、0で始まる3ケタで揃えられていますよね。

これを上記プログラムで開くと

エクセルでCSVデータの0が削除されてしまう

こうなってしまいます。エクセルがお利口すぎて、開いたときに各Noの冒頭の0が削除されてしまうのです。

3ケタで揃えたいからわざわざ0をつけているのに…といったことが起こり得ます。

勝手に日付として認識されてしまう

また、別の例を見てみましょう。

このようなCSVの場合です。

CSVファイルの例2

各レコードの最初の項目「No」が01-01,01-02,…といったように、二つの数列がハイフンで連結されているような形になっています。

これをWorkbook.Openで開きますと

エクセルでCSVデータが日付に変換されてしまう

…まさかの日付に変換されてしまいます!?エクセル、お利口すぎて我々の想定をはるかに超えてしまいました。

エクセルで普通にCSVを開く場合、上記のようなデータの勝手な変換がエクセルによって行われてしまっている場合がありますので、ぜひ取り扱う際は注意して下さい。

同じ理由でWorkbook.Openで開いた場合、正しく取得されない可能性がありますので、別の方法でCSVを読み込まなくてはいけないのです。

まとめ

今回はエクセルVBAでCSVファイルを取り込む際の超導入編として、CSVファイルとは何か、またWordbook.Openが使えないのはエクセルがお利口すぎるから、などといったことについてお伝えしました。

エクセルVBAによって業務ツールを作成していくのであれば、CSVファイルを取り込むという処理はそれはもうかなりの頻度で利用できるものになります。

初歩的な部分から、いろいろなパターンに至るまで丁寧に解説をしていきたいと思いますので、しっかりとご理解頂けると良いのではないかと思います。

次回はこちらの記事で、最も簡単なパターンについてお伝えしています。

エクセルVBAでCSVを読み取る初心者向けの最も簡単なプログラム
エクセルVBAでCSVファイルを取り込む方法について、まずはCSVファイルの内容を1行ずつ取り込んんでデバッグプリントするという初心者向けのとっても簡単なプログラムについて解説をしていきます。

合わせてご覧くださいね!

連載目次:エクセルVBAで色々なCSVファイルを取り扱う

様々なソフトウェア間のデータ交換の際に一般的に多く活用されているCSVファイル。エクセルで取り込んで集計や加工することもたくさんあることと思います。このシリーズでは、CSVファイルをエクセルVBAで取り込むためのテクニックについてお伝えしています。
  1. CSVとは何か?そしてエクセルでCSVファイルを扱うときの注意点
  2. エクセルVBAでCSVを読み取る初心者向けの最も簡単なプログラム
  3. エクセルVBAでCSVデータをカンマで区切ってワークシートに取り込む方法
  4. エクセルVBAでCSV取込み~改行がされないパターンの対処法
  5. エクセルVBAでダブルクォーテーションで囲まれているCSVファイルを取り込む
  6. エクセルVBAでデータにカンマが含まれてしまっているCSVを取り込む
  7. 文字化けよさようなら!エクセルVBAでUTF-8のCSVを読み込む方法

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