• 締切済み

テキストファイル→抽出した行をexcelに

VBAで、下記のようなログファイルのテキストを読み込んで、必要な文字が含まれる行だけを、エクセルに書き込むコードを教えていただけると助かります。 読み込むファイルの例(実際は、数万行あります) (1行目)dammy.co.jp - - [01/Jan/2015:00:03:51 +0900] "GET /west/index.html      HTTP/1.0" 200 ..... (2行目)smotor.co.jp - - [01/Jan/2015:00:03:51        +0900] "GET /drink/orange/index.html HTTP/1.0" 200 ..... たとえば、/west/ が含まれる行だけを抽出して、excelシートに書き込みたい ログファイルは、改行コードがCRLFです。  どなたかお分かりになる方、お助けください。 当方、VBAは初心者なので、説明も加えていただけると非常に助かります。

みんなの回答

回答No.2

色々な方法があるかと思いますが、#1さんとかぶらない方法です。 処理は高速な部類かと思いますが、WindowsXPでは多分、不可。 Sub 抜き出し() Const hideWindow As Integer = 0 Const WaitOnReturn As Boolean = True Dim oWS As Object, myCmd As String Dim myFilePath As String Dim trgStr As String '以下二行の値は適宜変更してください myFilePath = "D:\ナントカ\カントカ.log" trgStr = "/west/" 'コマンドプロンプトを呼び出すためにWshShellを作成します Set oWS = CreateObject("Wscript.Shell") 'コマンドプロンプトの命令文を組み立てます myCmd = "findstr /i /c:" & trgStr & " " & myFilePath & " |clip" 'コマンドプロンプトのウィンドウが出ないように実行します oWS.Run "%ComSpec% /c " & myCmd, hideWindow, WaitOnReturn 'クリップボードに記憶されたので、A1起点でペーストします ActiveSheet.Paste Destination:=Range("A1") Set oWS = Nothing '後始末 msgbox "おしまい" End Sub ミソはWindows7から使用できるようになった Clip.exe です。Vista? "/west/" を含む行だけを取り出してクリップボードに保存しています。 /i で大文字・小文字を区別しないようにしていますので不要なら削除してください。 エラー処理は省略しています。ご了承ください。 ご参考まで。

noname#206655
noname#206655
回答No.1

文字の長さ、文字の種類がファイル区切りとして妥当か検査 読み出すファイルを開く → 無い、終わり :1行読み込む EOF? → ファイル終わり 1行読み込み、検査名を探す あった? → Excelに書き出し、Line+1 ループ かな。

関連するQ&A

  • フォルダ内の複数ファイルから抽出(vbs)

    web のログファイルの集計のため、以下が可能なコードを教えていただきたい。 そのまま使えるコードですと非常に助かります。 (vbs または vba) logというフォルダに、複数のログファイルが入っています。 ファイルの文字コードは、UTF8  改行は、LFです。 この複数のファイルから、特定の文字列の入っている行を抜き出して、 1つのCSVファイルに書き出したい。(文字コードをShift-Jis 改行は、CRLFに変えたい) どうかお助けください。宜しくお願いいたします。

  • Excelセル内の改行を含む文字列の1行目抽出

    Excelセル内の改行を含む文字列があり、関数を使って、その1行目だけ抽出したい。 たとえば、下記のような式を書きました。「改行コード」おかしみたいで動作しません。 Left("A1", Find(vbCrLf, "A1")) (改行コードをさがして、そこまでの文字列を切り取る) これをVBAで書く方法があれば、コードを教えてください!

  • VBA 複数ファイルを読み込んで、抽出

    VBA初心者です。どうぞよろしくお願いいたします。 <やりたいこと> 同じフォルダにある複数ファイル(logファイル)を順番に読み込み、 特定の文字が含まれている行だけを、別ファイル(sum.csv)に保存していきたい。 ファイルが多数あるため、VBAで処理できればと思っています。 急いでおり、今回は丸投げになりますが、どなたかコードを教えていただけますと 非常に助かります。 コードを見て、勉強させていただきます。 どうかよろしくお願いいたします。

  • テキストファイルの最終行の削除

    C++Builder6です。 テキストファイルの最終行だけを削除する方法を 探しています。 詳しく言えば、ファイルを開けないで、最後にある 改行コード?のみを削除したいです。 よろしくお願いします。

  • Solaris上のC言語でCRLFのファイル作成は

    こんばんは。 Solarisの環境下で、 ファイルをオープン&編集&別ファイルを作成する処理において、 改行コードをCRLFにしたいと考えています。 プログラムはC言語で作成されています。 生成後のファイルは、文字コード:EUC、改行コード:LFで作成されています。 今回は、文字コード:SJIS、改行コード:CRLFで作成したいです。 現在、「\n」で、改行コードをLFとして作成しているようです。 この改行コードをCRLFにしたい、という意味です。 ファイルレコードの行末に「\n」を入れている処理の個所を、 「\r\n」に変更すれば、CRLFになるのでしょうか? プログラミング言語の仕様というよりは、 その実行モジュールが、どこのOS上で動くかに左右されるような気もしているのですが、どうでしょうか? よろしくお願いします。

  • 改行コードCR(\r)をアンダースコア(_)に変換

    AIX、Kシェルです。 ファイルに出力された改行コードCR(\r)をアンダースコア(_)に変換したいのですが、 文字コードSJISだと期待通りの結果になるのですが、UTF-8だと全角の手前で止まってしまいます。 試したコマンドは下記です。 cat file.txt | tr "\r" "_" > tmpfile ex) file.txt(最終行は半角spaceと全角space) 10(改行コード=LF) 11(改行コード=CRLF) 12(改行コード=CR) 1(改行コード=LF) 2(改行コード=CRLF) 3(改行コード=CRLF) ああ(改行コード=CRLF)  (改行コード=CR) 【結果】tmpfile 10(改行コード=LF) 11_(改行コード=LF) 12_1(改行コード=LF) 2_(改行コード=LF) 3_(改行コード=LF) ああ_(改行コード=LF)  _ これがUTF-8だと12までは変換できるのですが、以降が出力されません。 UTF-8でも最後まで変換されるようにするにはどうすれば良いのでしょうか? 初心者で申し訳ありません。 お手数ですが、何卒宜しくお願い致します。

  • VB6のテキスト処理 さまざまな文字コード/改行で対応

    VB6のテキスト処理で、Open InputとLine inputを使った場合に 文字コード/改行コードが SJIS/CRLFの時は正しく1行を読み込む事ができますが、改行がLFの時は正しく1行を読み取りません。 改行コードがLFもしくはCRの場合でも正しく1行を読み取る方法はあるのでしょうか? また、文字コードに関してもEUCやUTF-8,JISでも対応できる方法がありましたら教えて下さい。

  • Excel_VBAで改行コードの無いファイルを開きたい。

    ExcelVBAで組んだプログラムの中にファイルを開くルーチンを組み込もうとしています。 開きたいファイルは固定長なのですが、改行コードが付けられていません。 ファイルを開く際に、例えば120バイトごとに改行コード(CRLF)を挿入することは可能でしょうか? 出来るようでしたら方法をご教示いただきたいのですが。。。 どうぞ宜しくお願いいたします。

  • テキストファイルの最終行の改行コード削除

    お世話になります。 SQLコマンドを発行し、csvファイルを自動生成させるシェルスクリプトを作ったのですが、最終行にある改行コードを削除して欲しいとの指示を受けて、その方法を調査。試行錯誤しているのですがよい方法が見つかりません。 最終行にある改行コードのみを削除するにはどうしたら宜しいでしょうか。 ご教示頂ければ幸いです。 宜しくお願い致します。                                以上

  • 巨大なテキストファイルを行単位で分割したい

     大きなテキストファイルを行単位で分割するツールを探しています。  実例として、1行が3000バイト、10万件を2万件づつに分割する 程度かそれ以上の作業ができるものを探しています。  容量で分割してしまったり、分割後のファイルのヘッダやトレイラに 管理情報を付加するものはダメです。  改行コードは存在しますが、無い場合の為に1レコードの長さを指定 できるものであれば尚良いです。  以上よろしくお願いします。

専門家に質問してみよう