
ログファイルのようなテキストファイルの中から一部分だけ抽出することは可能でしょうか。
たとえばタイトルやSQL文、それに結果がダラダラと並んでいる一連のログファイル(テキストファイル)の中から、使いたい結果の部分だけ使用したいと考えております。
具体的には次のような感じです(テキストファイル部分は一字下げています):
--------------------
18,購入年月
SQL>******(省略します)*******
SQL>******(省略します)*******
SQL>******(省略します)*******
顧客番号 購入年月 購入個数
----------------------------------
0000012 2010/01 4
0000530 2009/12 16
0001234 2009/11 398
3行取得しました。
----------------------
19,顧客層
SQL>******(省略します)*******
SQL>******(省略します)*******
SQL>******(省略します)*******
・・・
以上のテキストファイルの中から、
(1)「顧客番号 購入年月 購入個数」
から
(2)「3行取得しました。」
までを抽出したいです。
検索して範囲指定して切り取り…というのが原始的な方法ですが
対象ファイルが数個あるので、Excelで開き、VBA等で対応できればと思っています。
ちなみに(1)の項目名の間は複数スペースで区切られており、顧客~個数まで固定で、同一ファイル内に同じ文字列はないので、検索の条件に使えると考えています。(2)は抽出件数によって「*行」の箇所が変わるうえ、同一ファイル内の他の部分にも登場する文字列です。
(1)から次に初めて出てくる(2)までを抽出
といったことができればと思うのですが、なかなか良い方法が浮かびません。
何か良い方法がありましたらご教示いただければ幸いです。
No.2ベストアンサー
- 回答日時:
古いVBAで、とりあえずご提示された条件を満たすだけの最低限の内容ですが。
Sub Data_Extract()
Dim TextLine As String
Dim Cell_Row As Long
Dim Atama_Four As String
Dim SW As Integer
Cell_Row = 0
SW = 0
Open "c:\Data.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, TextLine
' 行中に"顧客番号"という文字を発見した場合にスイッチを入れる
If InStr(1, TextLine, "顧客番号") <> 0 Then
SW = 1
End If
' SWが1で、かつ行中に"行取得しました。"という文字を発見した場合にスイッチを切る
If InStr(1, TextLine, "行取得しました。") <> 0 And SW = 1 Then
Cell_Row = Cell_Row + 1
Cells(Cell_Row, 1) = TextLine
SW = 0
End If
'スイッチが入っていればその行を書き出す
If SW = 1 Then
Cell_Row = Cell_Row + 1
Cells(Cell_Row, 1) = TextLine
End If
Loop
Close #1
End Sub
こちらの希望する通りのご回答、ありがとうございます!
確認させていただいた瞬間、感動さえ覚えました。
ご回答の内容に加えて、対象ファイルを選択する方法を組み込めば
目的は達成できそうです。
本当にありがとうございました!
No.1
- 回答日時:
逆に質問を。
このログに対してあなたが何らかの仕様を追加できますか?
もしできるのであれば簡単な方法があります。
たとえばほしいデータの最終行にvbtab等のコードを入れておけば
そのコードが出現するまでデータをExcelシートに書き込み続ける。
といった方法があります。
もしくは、【行取得しました。】という文字列が入った一行が出るまで
シートに書き込んでもいいでしょう。
しかし、ヒットしたデータまでログに履く仕様ってどうなんだろうとは思いますが。
なるほど、そのような方法があるのですね。
ただ、ログに対しての仕様追加は残念ながらできません。
ですので、一テキストファイルと考えて、
一度Excelで開いてから(情報はA列にしか入りませんが)
部分選択⇒切り貼りが一番手っ取り早いかと考えるのですが、
そのうまいやり方わかりません…。
ご回答(ご質問)ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) SQLで抽出 4 2022/12/04 13:55
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- SQL Server これをSQL文で出来るでしょうか? 1 2023/03/26 02:16
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
このQ&Aを見た人はこんなQ&Aも見ています
-
【VBA】テキストファイルから特定の文字列を抽出して、エクセルに出力する
Excel(エクセル)
-
【VBA】テキストファイルを指定行数からの読み込み
Visual Basic(VBA)
-
[エクセル VBA]テキストファイルから特定の行のみを抜き出したい 下記のようなテキストファイルから
Excel(エクセル)
-
-
4
テキストファイルから指定行をExcelに抽出したい。
Excel(エクセル)
-
5
Excel.VBA テキストファイルを指定行数からの読み込む
Excel(エクセル)
-
6
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
7
【VBA】複数のtxtファイルから特定区間の複数行を呼び出し、エクセルにまとめたい。
Visual Basic(VBA)
-
8
テキストファイルから特定の文字列が入った行を取得したいです。 例えば下記のような文が記載されたテキス
Visual Basic(VBA)
-
9
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
10
一つのTeratermのマクロで複数のTeratermのウィンドウを立ち上げることはできますか?
サーバー
-
11
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
12
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
13
ある文字列を含む行の抽出
Excel(エクセル)
-
14
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
15
テキストファイル内の文字列検索
Windows Vista・XP
-
16
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
17
VBAでCSVファイルを途中行まで読んだ後で最初の行から読み直す方法はありますか?
その他(プログラミング・Web制作)
-
18
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
19
複数のテキストファイルをexcelでそれぞれ別シートに書き出したい
Excel(エクセル)
-
20
Excel VBAでフォルダ内の全テキストファイルの任意データを取得について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】オートフィルター を...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
ワードの図形にマクロを登録で...
-
VBAでFOR NEXT分を Application...
-
算術演算子「¥」の意味について
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
質問58753 このコードでうまく...
-
vbaマクロについて
-
Vba Array関数について教えてく...
-
testファイル内にある複数のpng...
-
ダブルクリックで貼り付けた画...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】変数を使った、文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ATTファイルってどうやって開け...
-
テキストファイルの一部分を抽...
-
テキストファイル固定長データ...
-
VB(VBA)で、バイナリデータを使...
-
バイナリデータの中からMidのよ...
-
WORDのVBAで差し込み印刷時、デ...
-
Excel VBAが徐々に遅くなる
-
既存のテキストファイルを開く方法
-
C言語のソースからコメントを抜...
-
VBSでテキストファイルの2行目...
-
エクセルVBAでメールの自動作成...
-
wav ファイルから音声を数値デ...
-
ファイル変換
-
テキストファイル(英語&日本...
-
[VB.NET] 処理の高速化を行いた...
-
テキストファイルをSQLServerデ...
-
VBA。開いているテキストファイ...
-
テキストファイルの特定行の削...
-
VBscriptでWebサイトから取得し...
-
テキストファイルを読んで、Exc...
おすすめ情報