VBA テキストからエクセルへ読み込む!

テキストデータをエクセルへ読み込みをする作業って多くないですか?

エクセルでデータを加工する。その元のファイルは、CSVやTXTファイルであることが多いです。

どこかのシステムからダウンロードをする。もしくは自動でされる。そして、そこから加工をして、月次や週次の会議で使う。

このルーチンってめちゃくちゃ面倒じゃありませんか?

CSVやtxtファイルも1つをコピー&ペーストすれば良い。ならまだ軽いもので、それが何個もあったりしたらどうでしょうか?

そんなことで毎日1時間。ばからしいですよね?

とりあえずのとっかかりとなればと思います。

話したいこと

CSVの読み込みを行う方法を提示

読み込みにはたくさんの方法がある

自分なりに一番正しいと思ってる方法

VBAでテキストを読み込む方法

基本形

これを使えば、テキストやCSVファイルを取り込むことができます。使ってみてください。

単体では使えないので、引数を渡すように作ってあげてください。

カンマで区切って起きた問題

CSVファイルの中には、金額を示すカラムが入っていることが多いが、「3,000」と記載されているため、「3」と「000」で別れてしまう。

カンマで区切ったら逆に面倒??

こういうのって、マジで面倒で、本当に大変なんですよね。せっかく作ったのに、作ったものはダメなのかい!みたいな・・・

そこで、自分なりに考えて区切る方法を試行錯誤しました。

独自の区切りを自分で作る

独自の区切りは注意が必要

書き込み時から仕込みが必要

できる限り一般的なCSVでも使えるように

「”,”」で区切るようにするのが一番効果的だった。

自分で区切りを作った結果をお伝えします。

独自の区切りのコードを示す

コピーして使ってください。

今回は、ダブルクォーテーションとカンマとダブルクォーテーションの形を区切り文字として使うことで、重複の可能性を極限まで減らし、さらにはCSVではよくダブルクォーテーションで囲われている形が多いので、一般的にも使いやすい形にできたと思う。

ただし、データを確認するのは忘れない方が良い。データがもしダブルクォーテーションとカンマとダブルクォーテーションでは対応できない。という形のものであるならば、また同じように考えてほしい。

区切る文字が違った場合に考えるポイント

ダブルクォーテーションとカンマとダブルクォーテーションではなくて、違ったパターンだとしてもできる限り一般的に使われている形にも適用出来て、でもできる限り重複しないことを作り出せる考える!

また、壁にぶつかった時には、記事にしてみたいと思います。テキストやCSV系は非常に多く学べるので、追加でお伝えしたいことはたくさんあります。

Charsetの求め方なんかもいろいろとありますので、またお願いします。

スポンサーリンク