「CSVファイル」について② CSVをExcel形式で使う場合の方法など

Excel 一歩先へ

スポンサーリンク

CSVファイルをExcel形式で使うには

前回の記事で、CSVファイルというものについて述べた。
そして、CSVファイルとはExcelファイルとは仲間でも何でもないと言った。

「CSVファイル」について語る~ExcelファイルとCSVとは無関係~

でもCSVファイルは結局、Excel形式にして使いたいということが多いのが確かだ。

私もかなりの割合のCSVファイルは、そのままExcel形式として使うし、そのやり方は、単にCSVファイルをダブルクリックしてExcelで開き、そのまんまExcel形式で保存し直すという手抜きのやり方が多い。

しかしそれでは済まない場合があって、それをどうするか述べていく。
Excel VBA(マクロ)でCSVファイルを扱う方法についても別に記事を書いたので、それも示しておく。

CSVファイルをExcel VBAで扱う(4)新規作成したCSVファイルに内容を書き込みする

CSVファイルをExcel VBAで扱う(3)新規作成したCSVファイルに内容を書き込みする

CSVファイルをExcel VBAで扱う(2)CSVファイルの内容を読み込んで処理する

CSVファイルをExcel VBAで扱う(1)新規作成したCSVファイルに内容を書き込みする

前回も述べたが、CSVファイルとは結局のところ単に「半角カンマと改行でデータを区切ったテキストファイル」だ。

下記のような文字列の集合をメモ帳で保存しただけで、れっきとしたCSVファイルになる。

会社コード,会社名称
000001,AAAA株式会社
000002,BBBB株式会社

では上記のCSVファイルをExcelで開いた場合、どうなるか。
先頭0が消える

このように、項目「会社コード」は、数値として認識されるために先頭の「0」の文字が消されて表示されてしまう。

これでは、もとの「会社コード」が何だったのか分からなくなるので、Excel上でも正しく「0」文字を付けた状態で表示したい。さてどうするか。

これについて答えを言うと、もう「それ用のExcelツールをダウンロードして使うのが一番いい」と言いたい。

ググれば出てくるけど、たとえば下記リンクのようなツールだ。
https://forest.watch.impress.co.jp/library/software/excelcsv/
https://www.vector.co.jp/soft/winnt/util/se460132.html
http://siland.jp/dkcsv/

これらをダウンロードすれば解決・終了。・・・という、投げやりで身も蓋もない回答だ。
でもこれは、きちんと考えて言っていることだ。

正攻法・テキストファイル取り込みウィザードによるCSV取り込みについて

世間一般で紹介される正攻法のCSV取り込みの方法を、一応紹介する。

それは、

リボンの「データ」タブ
→「テキストファイル」から「区切り位置指定ウィザード」というものを開く
→「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ(D)」を選択
→区切り文字のカンマにチェックボックスにチェック(C)
→各列に「文字列」などの書式を設定していき開く・・・

というものだ。



・・・ええと皆、マジでこんなのやってるの?これが世間一般の正解と広く紹介されているわけだけど、本当に実務で広く使われる手段だとは、とても思えない。

とりあえず、この取り込みウィザードは、最も間違いのリスク無しでCSVを正確に取り込める手段なのは確かだ。
だから例題に示したような、横の項目数が2個とかしかないような簡単なCSVなら、これが最高の方法だろう。

しかし私なんかが実務で使うCSVは、横の項目数が30個くらい当たり前だし、200個とかに及ぶこともある。
その中には、先頭の「0」文字が消えると困るコード情報も、あちこちにたくさん混じっていたりもする。

そういう複雑なCSVで、こんな取り込みウィザードでちまちま取り込み形式を設定していくなんて、ちょっとやってられない。

そのとき1回限りのCSVファイルを開くなら良いが、何度も頻繁にシステムからデータを取ってあれこれ試行錯誤していくような作業のなかでは、面倒で非現実的だと思う。

そんで上記のやり方はExcel2013とかまでのやり方で、私の自宅PCに入ってる最新のOffice365版のExcelとかだと、更にやり方が変わっている。

おまけにこの取り込みウィザードには、クエリとかいう上級者向けの仕組みも組み込まれていて、もうそんなのまで考えていたら、とても初心者が扱いきれるものではない。

CSVファイルをダブルクリックしさえすれば簡単にExcelで開けるのに、わざわざこんな面倒な取り込みウィザードの手順を覚えてデータ形式を几帳面に指定していって、・・・ということを、世間の一般ユーザはやれてるの?

とてもそうは思えない。実際、私の周囲の初心者に教えても、全然やりきれなかった。

だからもう、小難しいことはなし。専用ツールでもフリーソフトでもダウンロードして使おうよってのが、私の示すベストアンサーだ。

自力でExcelマクロを組めるか

しかしそうは言っても、会社とかではフリーソフトなどは、セキュリティがどうこうの問題で、そうそうダウンロードできないところも多い。
そうなると、既製品を取り寄せるのではなく自力で何とかできないかということだ。

それは私もチャレンジした。CSVファイルを正しく取り込めるExcelマクロというのも自力で作ってみた。

しかしCSVファイルというのは、一般的な規則に当てはまらない特殊なものなど考え出すと、非常に多岐にわたる。

私が作ったExcelマクロは、あくまでも通常の規則に当てはまる一般的なCSVファイルを取り込むものであって、それ以上のものを作ろうと思うと時間を掛ければできなくもないが、どう考えてもコスパが合わない。

上記の取り込みウィザードそのものをマクロにしてしまうという手もあるのだが、それで作ったマクロはどうしても速さも足りないし、カスタマイズ性も悪いので、正直あまりマクロにする意義がない。

特殊なCSVファイルとは

繰り返すがCSVファイルとは、「半角カンマと改行でデータを区切ったテキストファイル」だ。
ではその半角カンマや改行の文字を、区切りの意味ではなくデータそのものとして使いたい場合はどうなるだろうか。

上図のB3セルが半角カンマを、B4セルが改行文字を、それぞれ1つのデータの中に入れているものだ。区切り文字として認識されたくはない。

この場合、このデータをCSVとして保存したなら、このようになる。

  • №,得意科目
  • 1,英語
  • 2,英語,数学
  • 3,国語
    社会

区切り文字と間違う危険がある半角カンマや改行の文字があった場合、ダブルクォーテーション の記号で囲んでいるわけだ。

そしてこういうイレギュラーな形式のことまで考えてCSVの取り込みマクロを作るというのは、とても大変なことだ。

私が作ったのは、本当に規則正しく半角カンマと改行でデータを区切ったCSVファイルを取り込むだけのものだ。

そして正攻法のテキストファイル取り込みウィザードなら、このようなイレギュラーにも対処できるので、その点では素晴らしい。

というかそもそも、こういうイレギュラーなCSVファイルを作るなという話ではある。
CSVファイルの他にはTSVというのもあって、これはTab Separated Values、つまりTabタブ文字でデータを区切ったものだ。

タブ文字で区切るのは正にExcelのやり方そのものであって、Excelと親和性が高いのだから、このTSVももっと使われていいと思うのだけどね。

本当にCSVファイルは、カンマ文字の扱いがExcelと相性が良くなくて、苦労するのですわ。

スポンサーリンク