【PowerQueryを活用】VBAでCSVファイルを取り込む最適な方法

IT
スポンサーリンク

今回は久しぶりにExcel VBAに関するトピックを取り上げていきたいと思います。

 

取り上げるのは、VBAでCSVファイルを、PowerQueryを使って取り込む方法です。

 

まずは手動で取り込む方法を見ていきたいと思います。

 

ExcelにCSVファイルをインポート何らかの形で活用することはあると思いますが、少しコツが必要です。

 

例えばこのようなCSVファイル。

 

メモ欄の一部が改行されている状態になっています。

 

 

このファイルをExcelに取り込んでみると、

 

 

改行されたメモがうまく取り込まれておらず、商品名欄にずれ込んでいるのがわかると思います。

 

これをうまく取り込むために、Power Queryを活用する必要があります。

 

スポンサーリンク

Power QueryをVBAで活用

タブの【新しいクエリ】→【ファイルから】→【CSVから】を順にクリックしていきます。

 

 

ファイルオープンダイアローグが表示されるので、該当のCSVファイルを選択してインポートをクリックします。

 

 

下のように表示されるので、【読み込み】ボタンをクリックします。

 

 

しばらくすると、下のように表示されます。

 

 

先ほどズレが生じて違う行に入り込んでいたメモの部分が、メモ欄の中で改行されて正しく表示されています。

 

手作業でまずは行いましたが、手作業でこれを毎回行うのはやはりめんどくさいですよね。

 

そこでマクロやVBAを用いて自動化する必要がでてきます。

 

ここまでの操作をVBAを使用して作成する前に、まずはマクロを利用してコードを見ていきたいと思います。

 

マクロを使用して生成されたコードがこちらになります。

 

 

結構複雑なコードになっていますね。

 

これを一からVBAで書くのはかなり億劫に感じるのではないでしょうか。

 

よってマクロでまずコードを生成してから、コードをアレンジする方法がベストかと思います。

 

アレンジするといっても大掛かりなものではなく、一部を変更するだけでOKです。

 

生成したマクロコードの変更する部分に赤い囲みをつけてみました。

 

 

サンプル2、サンプル(2)、サンプル__2は、もともとのCSVファイル名の【サンプル.csv】から拡張子(.csv)を取り除いたものになります。

 

パスが”C:\Users\Desktop\サンプル.csv”となっていますが、

 

これらの赤い囲みのサンプル表記の部分とパスを変数に置き換えれば、他のファイルやパスが変わっても活用することができます。

 

また赤い囲みの部分で、サンプル2、サンプル(2)、サンプル__2となっている部分は、基本的にはサンプル.csvと同一のものなので、

 

変数に置き換える時は同じ変数を置けば大丈夫です。

 

以下が完成コードです。

 

 

変更したのは赤い囲みの部分だけなので、そこまで手間はかかりません。

 

コードの説明を少ししていきたいと思います。

 

 

Application.GetOpenFilename(“CSVファイル,*.csv?”)でファイルオープンダイアローグを開いて、csvファイルを選択できるようにします。

 

 

上記のファイルオープンダイアローグの場合、サンプル.csvを選択すると、GetFilePathに

 

絶対パス(“C:\Users\Desktop\サンプル.csv”)が格納されます。

 

 

ここまでの処理で、最終的にGetRemoveExtensionFileName =”サンプル”

 

が格納される形となります。

 

コードを書く上で、注意する点をいくつか取り上げていきます。

 

 

上記のの5つの部分で、定義した変数名GetRemoveExtensionFileNameやGetFilePathを、

 

“”(ダブルクォーテーション)で囲んでいる点です。

 

変数名をこのような形でダブルクォーテーションで括るのは何か違和感があるかもしれませんが、

 

括らないとエラーが発生するので注意が必要です。

 

特にFile.Contents(“”” & GetFilePath & “””)の部分は、特殊な形なので、

 

(“”” & G変数名 & “””)になることを忘れないようにする必要があります。

スポンサーリンク

まとめ

今回はPower Queryを活用してVBAでCSVファイルを取り込む方法について取り上げてきました。

 

今回紹介したように、Power Queryの処理をVBAで一から書くよりもマクロと併用しながら書いていく方が能率が良いと思います。

 

Power Queryについてまだまだ情報は多くなく、使いこなすのは難しく感じるかもしれませんが、

 

とても便利なツールなので、またこちらでも情報を得て紹介していきたいと思います。

 

 

IT
スポンサーリンク
Yumaをフォローする
Yuma

関東在住のSEです。

TOEIC初受験時325点→オンライン英会話や短期のセブ留学→865点取得

SE業務の他、海外取引先とのweb会議や技術書翻訳など英語に関連する業務に携わった経験があります。

自身の経験をもとに、効果的な英語学習方法やオンライン英会話情報、またITに関する情報について発信しています。

Yumaをフォローする
Daybreak

コメント