• 締切済み

マクロでログ抽出し、日付ごとにシートを作成したい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 ここまでは良いとして、それ以降、先の質問から応用しようとしているのですが、いかんせんうまくいかず、お知恵を拝借できたらと思います。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

たとえば 前のマクロを生かして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

noct_nik
質問者

お礼

またまた回答ありがとうございます。 試してみたところ、シートが無限に作成されてしまう状況です。

関連するQ&A

専門家に質問してみよう