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で最終行まで繰り返します。

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

【100万人以上が使う】タスク管理・プロジェクト管理ツール「Backlog」の新規無料トライアル

「Backlog」は日本製のタスク管理・プロジェクト管理ツールです。

国内利用者は100万人を超え、エンジニア・デザイナー以外にも、営業・人事・経理など、幅広い職種で大人気!

日本製なので、親しみやすく直感的に使えるのがポイントです。

タスク管理・プロジェクト管理にかかせない主な機能がこちら。

  • 課題(タスク)の作成
  • ファイル共有
  • wiki
  • ガントチャート
  • カンバンボード
  • テンプレート機能

法人・個人問わず利用できるので、効率的にタスク管理したいフリーランスの方にもオススメですよ!