- 締切済み
マクロでログ抽出し、日付ごとにシートを作成したい2
http://okwave.jp/qa/q7454899.html こちらの質問の続きとなります。 上記URLの方法でシートは自動で作成されましたが、もう少し使い勝手を良くしたいと思います。 ログ解析用のExcelファイル(ログ解析.xlsとします)にマクロを置き、cvs形式のログを呼び出しし、そのログから日時ごとのシートを抽出し、最終的には「ログ解析.xls」に貼り付けできたらと思います。 ログのcvsファイル自体は、読み出しだけで保存や改変はしないものとします。 先の質問でいただいたマクロをベースに手直しをしているのですが、うまく動かない状況です。 解析用Excelには、ログファイルを開くまではマクロを書いてみましたが、それ以降がわからず… Sub ***() Dim strFileName As String Dim h As Range ' ファイルオープンのダイアログを開く strFileName = Application.GetOpenFilename("******.csv (*.csv),*.csv", 1, "ファイルを選択") If (strFileName <> "False") Then ' ファイル名が存在しない場合は抜ける If (Trim(Dir(strFileName)) = "") Then Call MsgBox("ファイルが見つかりません", vbOKOnly, "確認") Else ここまでは良いとして、それ以降、先の質問から応用しようとしているのですが、いかんせんうまくいかず、お知恵を拝借できたらと思います。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
たとえば 前のマクロを生かしてCSVにシートを生成し、最後にまとめて引っ張ってくる 前のマクロをやめて自分ブックにシートを生成し、データを転記する など、アイデア次第でアプローチはいろいろあると思います。 マクロ的には、前者の方が(ほんのちょっとだけですが)簡単かも?しれません。 作成例: Sub macro2() dim myFile as string dim h as range dim s as string dim w as worksheet on error resume next myfile = Application.GetOpenFilename("******.csv (*.csv),*.csv", 1, "ファイルを選択") if myfile = "False" then exit sub s = dir(myfile) if s = "" then msgbox "File NOT Found" exit sub end if workbooks.open myfile ' if activeworkbook.fileformat <> 6 then ' msgbox "OPEN CSV and RUN" ' exit sub ' end if with workbooks(s).worksheets(1) set h = .range("A:A").find(what:="[[", lookin:=xlvalues, searchdirection:=xlprevious) do until h is nothing set w = thisworkbook.worksheets.add(after:=thisworkbook.worksheets(thisworkbook.worksheets.count)) range(h, .range("A65536").end(xlup)).entirerow.cut destination:=w.range("A1") ' w.name = application.substitute(trim(mid(w.range("A1"),3,len(w.range("A1"))-4)), ":", "") set h = .range("A:A").findprevious(h) loop end with workbooks(s).close savechanges:=false end sub
お礼
またまた回答ありがとうございます。 試してみたところ、シートが無限に作成されてしまう状況です。