- PR -

VBSコンパイルエラーの原因が分かりません‥‥

1
投稿者投稿内容
新人SE
会議室デビュー日: 2008/09/16
投稿数: 3
投稿日時: 2008-09-16 00:44
初めまして、新人SEと申します。
現在、社内サーバを監視するためにVBSを作成していますが、コンパイルしても
うまくいきません。
まだ、VBSを触り始めて日が浅く何が原因かも分からないため困り果てております。
ど素人のプログラムで申し訳ございませんが、どなたか詳しい方がいらっしゃれば
どこが悪いのかご教授お願いいたします。

-------------------------------------------------------------------------------
Dim Host(2)
Host(0) = "hostname1"
Host(1) = "hostname2"
For i = 0 To 1 '各監視端末をターゲットにする
Target = Host(i)
For j = 1 To 3
Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '" & Target & "'")
For Each Ping In PingSet
if PingSet.StatusCode = 0 then '正常なpingならばsuccess
msgbox("success.")
j = 3
Exit For
else if PingSet.StatusCode <> 0 then 'pingが届かなければ3回までpingを実行する
if j = 3 then 'pingが3回目届かなければerror
Select Case PingSet.StatusCode
Case 11010
msgbox("request timed out.")
Case Else
msgbox("error.")
End Select
end if
end if
Next
Next
WScript.Sleep(5000) '5秒後に次の監視端末へping
Next
-------------------------------------------------------------------------------
ふるふる
会議室デビュー日: 2008/02/05
投稿数: 19
投稿日時: 2008-09-16 09:59
For Each Ping In PingSet
でループさせている中で、PingSet.StatusCode を使おうとしています。
PingSetにはStatusCodeというプロパティがないようですね。
PingSetではなく、Pingを使うのでしょう。

エラーがでる、というならどういうエラーがでたのか示さないと、私は、
「実行時エラー'438':オブジェクトは、このプロパティまたはメソッドをサポートしていません。」
がでたのでこれだと思いますが、違っているかも知れませんよ?
というか違うはず。コンパイルエラーならデバッガがエラーメッセージを教えてくれるでしょう? エラーメッセージについてはどう考えたのですか?
無視ですか?


今回私はExcle2003のVBAで提示のソースを実行させ(Wscript.Sleepはコメント)、
エラーがでたところを確認しました。また、動的に作られているPingオブジェクトなどはローカルウィンドウでプロパティを確認しました。
あと、Ping.StatusCodeにはNullが入ってましたので、今のプログラムだとバグになりますね。

Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2008-09-16 10:01
確かに原因の分かりにくいエラーメッセージですね・・・。
原因特定のために1行ずつ消して試してみるといいですよ。
For文かと思いきや、If文をバッサリ消すと動くようです。^^;
ふるふる
会議室デビュー日: 2008/02/05
投稿数: 19
投稿日時: 2008-09-16 10:05
ElseIf はElseとIfの間にスペースがあってはいけません。

コンパイルエラーは多分、これのことでしょう。
新人SE
会議室デビュー日: 2008/09/16
投稿数: 3
投稿日時: 2008-09-18 19:10
ご連絡遅れまして申し訳ございません。

ご指摘にありましたように、ELSE IF文を消去して改良した結果なんとか動くようにはなりました。(まだまだ提出できるレベルではありませんがwww)

ふるふるさん、Java僧さんこんな稚拙なプログラムに対して丁寧なご指摘をして頂きありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)