以下のvbsを実行すると、「この変数は宣言されていません。:objFSO」
とエラーがでています。
この変数は二行目で宣言しているつもりですが、初心者でどこが悪いか判断できず、お手上げ状態です。
よろしくご指導ください。
---------------------------------------------------------
Option Explicit
set objFSO = CreateObject("Scripting.FileSystemObject")
fv1 = objFSO.GetFileVersion("C:\Program Files\Microsoft Office\Office10\OUTLOOK.EXE")
if fv1 = "10.0.5709.0" then
msgbox "プログラム実行済みです"
else
oshell.run ("プログラムのパス")
end if
---------------------------------------------------------
2行目はsetしているだけで宣言はしていません。
ということで、
Dim objFSO AS Objectというような宣言が必要です。
>> 「この変数は宣言されていません。:objFSO」
先頭に『Option Explicit』と書いた場合は、変数を使用する前に、
Dim/Private/Publicステートメントのいずれかを使って、
その変数を宣言しておく必要があります。
>> この変数は二行目で宣言しているつもりですが
Setステートメントは、オブジェクトの代入時に使用する
ステートメントです。変数宣言を行うための物ではありません。
> Dim objFSO AS Objectというような宣言が必要です。
正しくは、
Dim objFSO
ですね。
いなさん、魔界の仮面弁士さんありがとうございます。
バージョンを比較して実行できるようになりましたが、実行されたプログラムをキャンセルした場合、次から実行できなくなります。
一行目にtempを初期化(temp = "")を入れたりもしましたが、駄目でした。
現在の状態は以下のとおりです。
よろしくお願いします。
-----------------------------------------------
Dim fso, temp, oShell
Set fso = CreateObject("Scripting.FileSystemObject")
temp = fso.GetFileVersion("c:\\Program Files\Microsoft Office\Office10\OUTLOOK.EXE")
If temp = "10.0.5709.01" Then
Else
Set oShell = WScript.CreateObject("WScript.Shell")
oShell.Run("プログラムのパス")
End If
-----------------------------------------------
んと、次から実行されないのは、
バージョンを比較して実行したプログラム?
それとも、
上記のソースコード?
Set fso =Nothing
Set oShell =Nothing
してみるといいとかなのかなぁ〜