VBA

【ExcelVBA】テキストファイルを取り込んでエクセルシートに書き出すマクロ

ねぇもりさん、「タブ」とか「カンマ」で区切られてるテキストファイルをExcelに取り込みたいなぁ
もり
もり
たしかにそのままだと見にくいよね。エクセルシートに取り込むマクロを作ってみよう

「タブ区切り」・「カンマ区切り」のテキストファイル(拡張子.txt)をエクセルシートに書き出すマクロを紹介します

vbatext1

【ポイント】取り込み対象のテキストファイルを「ファイルを開くダイアログ」でユーザが自由に指定できます

vbatext2

テキストファイルをExcelシートに取り込むマクロ

以下のコードを標準モジュールに貼り付けて実行します

マクロの使い方

マクロを実行すると、ファイルを開くダイアログが出現します。シートに書き出したいテキストファイルを選択して「開く」をクリックします。

vbatext2-2

マクロ実行時に、アクティブになっているExcelシートに書き出されます。

コードの解説

上記のソースコードのポイント部分を解説していきます。

As #1で、開くテキストファイルに”1”という番号を付けています。この番号を後続の処理で使用します。

 

EOF関数でテキストファイルの最終行まで繰り返します。(1)は、テキストを選択して開いたときに付けた番号(As #1)です

 

Line Input で1行丸ごと変数bufに格納します。

「タブ区切り」とは、各文字の間に、目に見えないTab文字が含まれていることです。このTab文字も含めて、変数bufに格納しています。

vbatext3

 

「カンマ区切り」の場合は「カンマ」という文字が目に見えるのでイメージしやすいですね。

buf = “あ,い,う,え,お”

Split関数を使用して、変数bufをvbTabで区切ります。vbTabはTab文字を表します。

 

vbatext4

※カンマで区切る場合はこのように記述します

 

変数aryLineに格納されている文字を一つずつセルに書き込みます。

①LBound関数とUBound関数を使用して、配列のインデックスの下限と上限を取得し、その範囲の処理を繰り返します。

②配列変数aryLineのインデックス番号は0から始まるのに対し、セルの列番号は1から始まります(1列目~)。そのため、書き込み先の列番号を+1します。

vbatext5

これで1行を書き込めました。あとはLoopで最終行まで繰り返します。

最後にファイルを閉じるのを忘れずに!

【個人&法人向け】IT専門ブログ記事添削サービス

会社や個人で記事作成をしていて、このようなお悩みはありませんか?

個人でブログを書き始めた。自己流でなんとなく書いているので、読み手に伝わる文章になるよう、アドバイスがほしい。
情報発信のため、会社でコーポレートブログを立ち上げた。技術ノウハウを持つエンジニアはいるが、文章を書くことには慣れていないため、読み手に伝わるかチェックしてほしい。

伝え方には「コツ」があります。あなたの記事が読み手に伝わるよう、パソコン本の著者が丁寧に添削いたします。
その場限りの添削だけではなく、今後記事を書くうえでのポイントもレクチャします。