VBA

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

ねぇもりさん、「タブ」とか「カンマ」で区切られてるファイルって読みにくいよね
Excelに上手く取り込めないかなぁ

 

もりさん
もりさん
たしかにそのままだと見にくいよね。エクセルシートに取り込むマクロを紹介するよ~

 

この記事で紹介すること

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

【イメージ】
vbatext1

✔ このマクロの良いところ
取り込み対象のテキストファイルを「ファイルを開くダイアログ」でユーザが自由に指定できます

vbatext2

ソースコード

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

マクロの使い方

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

vbatext2-2

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

コードの解説

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

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

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

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

このTab文字も含めて、1行を丸ごと変数bufに格納します。

vbatext3

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

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

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

vbatext4

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

 

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

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

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

vbatext5

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

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

非エンジニアもプログラミングを学習する時代!

「プログラミング」ってエンジニアとかプログラマーの人がするものでしょ?文系の私には関係ないや~って思っていませんか?

いまは、非エンジニアもプログラミングを学習する時代です!

「プログラミングの必修化」をご存知ですか?

  • 2020年~ 小学校で開始
  • 2021年~ 中学校で開始
  • 2022年~ 高等学校で開始
  • 2024年~ 高校受験科目に新設

学校での必修化に向けて、すでに子ども向けプログラミングスクールが多数開校されています。

あと数年もすれば、あたりまえにプログラミングができる新入社員がやってくる時代になります。

プログラミングってなに?どんなもの?まずは無料体験から試してみませんか?

 

1週間の無料体験あり!
オンラインスクール実績No.1!