
ログファイルのようなテキストファイルの中から、条件を指定してEXCELに抽出することは可能でしょうか。
まず、test.txtというファイルがあります。
中身は
読み込み開始
日付xxxxxxxxx
仕様xxxxxxxxx
エラーxxxxxxxx
TAGxxxxxxxxxx
IDxxxxxxxxxxx
読み込み開始
日時xxxxxxxxx
仕様xxxxxxxxx
TAGxxxxxxxx
IDxxxxxxxxxx
読み込み開始
日付xxxxxxxx
仕様xxxxxxxx
エラーxxxxxxx
TAGxxxxxxxx
IDxxxxxxxxxx
・
・
・
以上のようなテキストファイルから読み込み開始からIDまでを一区切りとして、EXCELのA列にID、B列にエラーを抽出し、エラーが無い場合はセルの中を空欄にするようにし、数千行を処理したいです。VBAで対応したいです。
良い方法がありましたらご教示いただければ幸いです。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No3です
横からですが、No2様のコードが動かないとも思えないので・・
>上記コードでは上手く動作しませんでした。
のような二者択一的な情報だけでは進展しないと思いますが、ありそうなのは文字コードが違っているとか。
試しに、エクセルから直接テキストファイルを開いてみたときに、A列にご質問のような形でテキストの内容が読み込めるのでしょうか?
No.3
- 回答日時:
No1です。
>テキストを順に読んでいくだけだと表示がバラバラになってしまうと思っています。
何も処理をせずに文字通り読み込だままを吐き出せばそうなっちゃいますけれど、読込みながらご質問のような処理を行えばよいのでは?
読みながら処理をするのが複雑に感じるのであれば、簡単な方法として以下のような方法もあります。
(いずれにしろ、テキストファイルを一度は全部読むので、速度等に大きな違いは無いものと推測します)
1)まず、OpenTextメソッドでテキストファイルを(文字通り)そのまま読み込みます。
(新しいブックのA列に質問文にご提示のような形で読み込まれます)
2)そのシートを元データとして、なさりたいように編集しながら目的のシートに記入してゆき
3)処理が終わったら、元データのブックは保存せずに閉してしまう。
2)~3)は普通に「セルの値の参照と条件分岐処理」を含むループで実現可能と思います。
1)に関しては、以下を参照なさればよろしいかと。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/a …
動作が確認できたなら、ScreenUpdating = False で処理するようにすれば、処理中の画面が見えることは無くなりますし、全体の速度も向上するはずです。
No.2
- 回答日時:
こんな感じで如何でしょうか。
アクティヴなシートの1行目から結果を表示するはずです。
※テキストファイルの文字コードがS-JISという前提です。
Sub test()
Dim buf As String
Dim id As String
Dim er As String
Dim row As Long
row = 0 ' 1行目から結果を出力
Open "C:\○○\test.txt" For Input As #1 ' 実際のファイル場所を記述
Do Until EOF(1)
Line Input #1, buf
Select Case True
Case (Left(buf, 6) = "読み込み開始")
row = row + 1
id = ""
er = ""
Case (Left(buf, 3) = "エラー")
er = Mid(buf, 4)
Case (Left(buf, 2) = "ID")
id = Mid(buf, 3)
Cells(row, 1).Value = id
Cells(row, 2).Value = er
End Select
Loop
Close #1
End Sub
No.1
- 回答日時:
こんにちは
>良い方法がありましたらご教示いただければ幸いです。
普通にテキストファイルを読んでいって、順に処理すればよさそうに思いますが・・・
フォーマットがいまいち確信を持てませんが、「読み込み開始」とある行には、実際に「読み込み開始」というテキストがあるということでしょうか?
また、空白行も存在するということでしょうか?
とりあえず、テキストファイルを読み込んで処理する例を以下に挙げておきます。
(CSVファイル等の例が多いので、そのままというわけにはいきませんが…)
まぁ、一旦、シートに書き出してからシート上で処理するという方法もありますけれど
http://officetanaka.net/excel/vba/file/file08b.htm
https://www.excel-prog.com/entry/2018/01/23/204018
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) Excel起動時にエラーダイアログが表示される 3 2022/07/28 19:52
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- Excel(エクセル) csvファイルをExcel形式で読み込むには 2 2023/07/03 13:09
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ATTファイルってどうやって開け...
-
コーディングについて。
-
既存のテキストファイルを開く方法
-
WORDのVBAで差し込み印刷時、デ...
-
VBSでテキストファイルの2行目...
-
テキストファイルの一部分を抽...
-
ファイル操作について。
-
Microsoftの異常?リネームが出...
-
vimをアウトラインエディタのよ...
-
テキストファイルの特定行の削...
-
ASP.NET Web上のテキストファ...
-
Excel VBAが徐々に遅くなる
-
VBscriptでWebサイトから取得し...
-
RGBデータからBMP画像へ
-
エクセルVBAでメールの自動作成...
-
こんな場合はどうすればいいの?
-
フォーム無しでアプリを作成す...
-
Javaのプロパティファイルの文...
-
ボタン
-
VB(VBA)で、バイナリデータを使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ATTファイルってどうやって開け...
-
テキストファイルの一部分を抽...
-
テキストファイル固定長データ...
-
VB(VBA)で、バイナリデータを使...
-
バイナリデータの中からMidのよ...
-
WORDのVBAで差し込み印刷時、デ...
-
Excel VBAが徐々に遅くなる
-
既存のテキストファイルを開く方法
-
C言語のソースからコメントを抜...
-
VBSでテキストファイルの2行目...
-
エクセルVBAでメールの自動作成...
-
wav ファイルから音声を数値デ...
-
ファイル変換
-
テキストファイル(英語&日本...
-
[VB.NET] 処理の高速化を行いた...
-
テキストファイルをSQLServerデ...
-
VBA。開いているテキストファイ...
-
テキストファイルの特定行の削...
-
VBscriptでWebサイトから取得し...
-
テキストファイルを読んで、Exc...
おすすめ情報
返答ありがとうございます。
「読み込み開始」という文字列が実際にあります。
内容説明の為に簡易的にしましたが、実際は通常読み込みが正常の時は「読み込み開始」行からID行まで、他に数十行文字列があり、エラーが表示された時の区画は「読み込み開始」からID行まで3行程度の表示になります。ですので、テキストを順に読んでいくだけだと表示がバラバラになってしまうと思っています。
説明が上手くなくてすみません。