はじめに
この記事でご紹介したい内容はこちらです。
ご紹介したいこと
- テキストファイルの任意の行をExcel VBAで取得する方法
- 取得したいテキストファイルをダイアログボックスで指定する方法
本記事の内容を動画でまとめています
この記事で紹介するExcel VBAのコードを実行するとこんなことができます。Excel VBAの実行結果をパッと見たい方はどうぞご覧ください。
-ちょっと使えるネタを紹介-
この記事でご紹介したい内容はこちらです。
ご紹介したいこと
この記事で紹介するExcel VBAのコードを実行するとこんなことができます。Excel VBAの実行結果をパッと見たい方はどうぞご覧ください。
目次から見たい項目へ移動すると便利ですよ。
目次
この記事では簡単にこちらのテキストデータを用意しました。
1行目には見出しがあり2行目にデータが保存されています。
それぞれのデータはコンマ『,』区切りで保存されていることを想定しています。
作成したエクエルVBAコードを実行して任意の行データを取得してみます。
今回はテキストファイルの2行目を取得するコードになっています。取得したいデータに応じて、取得する行を変えたり特定の文字がある場合にデータを取得するといった使い方も可能です。
取得方法はボタンに登録したエクセルのコードを実行するだけです。
ボタンをクリックしてExcel VBAコードを実行します。
ボタンをクリックするとダイアログボックスがでてきます。選択する手間を省くためエクセルが保存されているフォルダからスタートするようにしています。
取得したテキストファイルを選択すると2行目のデータがエクセルのセルへ入力されます。
テキストファイルの2行目が取得されています。
つづいてVBAコードを記載します。
テキストファイルの任意の行を取得するExcel VBAコードです。
標準モジュールへ記載します。
'1つのテキストの任意の行を取得 Sub GetTextData() Dim OpenFileName 'カレントディレクトリを設定します With CreateObject("WScript.Shell") .CurrentDirectory = ThisWorkbook.Path End With 'ファイルを指定するダイアログを表示します OpenFileName = Application.GetOpenFilename("テキストファイル,*.txt?") '設定しない場合は、終了します If OpenFileName = False Then Exit Sub '長さは取得したいテキストデータに応じ変更してください Dim Hozon As Variant ReDim Hozon(1 To 100, 1 To 100) As Variant '一旦すべてのテキストデータを配列へ保存します Open OpenFileName For Input As #1 i = 0 'テキストをすべて取得する Do Until EOF(1) Line Input #1, buf i = i + 1 'コンマ区切りでデータを取得する a = Split(buf, ",") For j = 0 To UBound(a, 1) Hozon(i, j + 1) = a(j) Next Loop Close #1 '任意行の値を取得します Dim GetData As Variant ReDim GetData(1 To 1, 1 To 100) As Variant '▼必要に応じて変更 i = 2 '2行目のデータを取得 For j = 1 To UBound(Hozon, 2) GetData(1, j) = Hozon(i, j) Next 'データ貼り付け With ActiveSheet .Range(.Cells(2, 1), .Cells(2, 1).Offset(0, UBound(GetData, 2) - 1)) = GetData End With End Sub
テキストファイルの任意の行だけ取り出したい場合に使えるVBAコードです。
さらにフォルダ内のすべてのテキストファイルからデータを取得できるようにVBAコードを拡張すればより操作性の高いコードになります。
最後までご覧くださいましてありがとうございました。
関連する記事から探す
カテゴリから見たい項目を探すと便利ですよ。
↓キーワードを入力する