プロが教えるわが家の防犯対策術!

http://oshiete.goo.ne.jp/qa/7454899.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

ここまでは良いとして、それ以降、先の質問から応用しようとしているのですが、いかんせんうまくいかず、お知恵を拝借できたらと思います。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/05/04 09:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!