VBScriptについて質問させていただきます。
VBScriptにて、EXCELファイルを開いてパスワードを付加して保存し直す処理を行っているのですが、
処理を記述しているvbsファイルを配置/実行しているサーバ(Windows Server 2008 R1)を
再起動すると、最初の1回だけVBScriptが正常に実行されません。
エラーとして処理が終了することもない為、原因がわかりません。
(コマンドで実行してExcel.Applicationでオブジェクトがありません。のエラーとなる場合がありましたが、
なぜオブジェクトがないのかわかりません※上記同様、再起動後の最初の1回だけ)
原因がおわかりになる方がいらっしゃいましたら、御教授願います。
なお、EXCELが1度でも起動していると正常にパスワードの付加ができるようになります。
vbsファイル-----------------------------------------------------------
Dim ret, fso, folder, objXL
' 引数のチェック
If WScript.Arguments.Count <> 2 Then
WScript.Quit(1)
End If
' FileSystemObjectの初期化
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
' 引数で指定されたフォルダ有無チェック
If Not fso.FolderExists(WScript.Arguments(0)) Then
Set fso = Nothing
WScript.Quit(1)
End If
Set folder = fso.GetFolder(WScript.Arguments(0))
' Excelアプリケーションの初期化
Set objXL = WScript.CreateObject("Excel.Application")
' メイン処理の呼び出し
ret = Main(objXL, folder, WScript.Arguments(1))
' 終了処理
Set fso = Nothing
Call objXL.Quit()
Set objXL = Nothing
WScript.Quit(ret)
Private Function Main(objXL, folder, password)
Dim objWB, file
On Error Resume Next
' 画面描画・警告の抑止
objXL.ScreenUpdating = False
objXL.DisplayAlerts = False
' フォルダ内の全てのファイルに対してパスワード設定
For each file in folder.Files
Set objWB = objXL.WorkBooks.Open(file.Path, , , , password)
If Err.Number <> 0 Then
If Not objWB Is Nothing Then
Call objWB.Close()
Set objWB = Nothing
End If
Main = 1
Exit Function
End If
Call objWB.SaveAs(file.Path, , password)
If Err.Number <> 0 Then
If Not objWB Is Nothing Then
Call objWB.Close()
Set objWB = Nothing
End If
Main = 1
Exit Function
End If
objWB.Saved = True
Call objWB.Close()
Set objWB = Nothing
Next
' 画面描画・警告の開放
objXL.DisplayAlerts = True
objXL.ScreenUpdating = True
Main = 0
End Function
ここまで-----------------------------------------------------------
以上