プロが教える店舗&オフィスのセキュリティ対策術

ログファイルに下記のように記述されています。
2005/10/05 aaaa bbbb cccc ~ mmmmm dddd
left関数を使用して日付だけを取得し、取得した値とdate関数で取得した値を比較(IF文)し、一致した時に処理を行いたいんですが、何故か比較されません。
msgboxで何が表示されているか確認したんですが、両方とも中身は2005/10/05となっています。
何が原因なんでしょうか?
left関数で取得した値が日付と認識されていないのでしょうか?教えてください。

A 回答 (7件)

#6>


イベントビューアのテキスト形式の出力の区切りはタブのようです。

for i=1 to len(aLogLine)
ch=Mid(aLogLine,i,1)
MsgBox ch & ":" & Asc(ch)
next
のようにして調べてみてはどうでしょうか
    • good
    • 0
この回答へのお礼

出来ました!ありがとうございます。やはりタブ区切りだったんですね。

お礼日時:2005/10/08 18:59

>区切り文字スペースではなくタブを指定することは可能でしょうか?


field=split(aLogLine, vbTab)
とします

この回答への補足

試してみたんですが、タブでもないようです・・・。他に何か考えられますでしょうか?

【ファイルについて】
イベントビューアのアプリケーションログをテキストファイルで保存し、そのファイルを処理しています。

補足日時:2005/10/08 15:25
    • good
    • 1

>上記の方法で試したんですが、field(1)に1行全てが代入されます。


それは、変ですねえ。
多分、行頭にスペースが1つあって、以降の区切りがスペースではないのだと思います。

この回答への補足

もしかしたら、スペースでは無くタブで区切られているのかもしれません。区切り文字スペースではなくタブを指定することは可能でしょうか?

補足日時:2005/10/07 21:32
    • good
    • 0

>回避策


フィールドが固定長でない場合にはmidで単純に取り出すのは、だめです。
#3のようなデータの場合、スペースで各フィールドが区切られているので、split関数を使って各フィールドに切り分けることができます。

aLogLine="2005/10/07 9:00:00 AAA BBB CCc"
field=split(aLogLine)
WScript.Echo field(1)
結果>9:00:00が表示される
なので、上記のようにして
timevalue(field(1))とすればいいです。
timevalueは"hh:mm:ss"の形式でいいのでそのまま使えます

この回答への補足

上記の方法で試したんですが、field(1)に1行全てが代入されます。
データ自体は、EmEditerで開くと空白で区切られているように思われます。何がいけないのでしょうか?

補足日時:2005/10/07 20:20
    • good
    • 0

>時間で比較するにはどうすれば良いのでしょうか?


時間で大小比較するような場合には、
"10:00"の様な文字列からDate型に変換してから比較するのがいいと思います。
timevalue(mid(strdate,10,5))>=timevalue("10:00")
のようにすることで10時以降であるか調べられます。
ただし、mid(strdate,10,5)の部分は11:15のような形式でなければいけません

この回答への補足

返信ありがとうございます。

新たな問題が出てきたので、教えて下さい。

現在ログに下記のように記述されています。
2005/10/07 15:00:00 AAA BBB CCc
2005/10/07 9:00:00 AAA BBB CCc

timevalue(mid(MyString,11,5)) >= timevalue"9:00"

時間を比較する際に、1行目は"15:00"と取得できるんですが、2行目は"9:00:"が取得されます。これだと比較が出来ない為、時間を2桁にするにはどうすれば良いのでしょうか?回避策でも構いませんので教えて頂けますか?

補足日時:2005/10/07 18:51
    • good
    • 0

>ここの部分なんですが→ "" & Date


空文字列と結合することで、強制的に文字列に変換しています。

この回答への補足

日付で比較することは出来ました!ありがとうございます。
もう一点教えて頂きたいんですが、時間で比較するにはどうすれば良いのでしょうか?
10時以降という比較内容しようと思っています。

mid(strdate,10,5) >= "10:00"

補足日時:2005/10/06 22:35
    • good
    • 0

Date型をMsgBoxで表示した時に2005/10/05となってもそれは、文字列型ではありません。


IF "" & Date = left(logStr,10) then
みたいに型をそろえる必要があります。

この回答への補足

コメントありがとうございます。
ここの部分なんですが→ "" & Date
どういう意味なんでしょうか?教えてもらえますか?

補足日時:2005/10/06 10:57
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています