前提・実現したいこと
Windowsタスクスケジューラからエクセルマクロを自動で動かしたい。
ファイル構成は以下になっています。
タスクスケジューラ⇒バッチファイル⇒vbsファイル⇒マクロ
発生している問題・エラーメッセージ
Windowsタスクスケジューラからファイル出力をするタスクの実行を行ってもファイルの出力がない状態です。
タスクスケジューラでは実行完了になっています。
バッチファイルをダブルクリックして実行してもファイル出力はできません。
しかし、コマンドプロンプトからバッチファイルを実行するとファイルの出力があり、想定通りの動作をします。
原因を探っていると画面からエクセルを起動すると以下のエラーが表示されることがわかりました。
下述のエラーが原因で、エクセル起動時にマクロが止まってしまっているのではないかを考えています。
エラーメッセージ Excelは前回正常に起動しませんでした。 Excelをセーフモードで起動すると、起動時の問題を修正したり特定してプログラムを正常に起動するのに役立ちます。 ただし、セーフモードでは、一部の機能が使用できないことがあります。 Excelをセーフモードで起動しますか?
該当のソースコード
★コマンドプロンプトで実行可能なためソースコードに問題はないと思われます。
上記エラーが出なくなれば動く想定ですが、念のためマクロの中身を抜粋して記述します。
VBA
1 Sub Execute() 2 On Error GoTo ERR_HANDLER 3 4 Const extension As String = ".xlsx" 5 Dim fileName As String 6 Dim strDate As String 7 Dim strTime As String 8 Dim hostName As String 9 Dim serviceName As String 10 Dim portNumber As String 11 Dim userId As String 12 Dim password As String 13 Dim sqlFilePath As String 14 Dim directory As String 15 Dim ws As Worksheet 16 Dim log As New TextFile 17 18 Set ws = Worksheets("Sheet1") 19 20 'date 21 strDate = Format(Now - 1, "yyyymmdd") 22 strTime = Format(Now, "hhmm") 23 24 'SQL 25 sqlFilePath = GetSqlPath() 26 fileName = GetTitle(sqlFilePath) 27 28 'DB情報 29 ・・・・・・ 30 31 'save 32 directory = GetDirectory() 33 34 If CheckExistFile(fileName & strDate & extension, directory) = "" Then 35 ・・・・・ 36 Else 37 ・・・・・ 38 End If 39 ・・・・・ 40 ERR_HANDLER: 41 If (log Is Nothing) Then 42 Else 43 log.FileClose 44 End If 45 If Err.Number <> 0 Then 46 Call log.TextWriteLine(Format(Now, "yyyy/mm/dd hh:mm:ss") & " : err - " & Err.Number & "/" & Err.Description) 47 End If 48 Set log = Nothing 49 Set ws = Nothing 50 End Sub
試したこと
・エラー画面で「はい」や「いいえ」のどちらを選んでも時間を空けるとエラーが出ます。
マクロも実行できません。
・エクセルの再インストールをしても変わらずエラーが出ました。
・修復機能を使用しても改善しませんでした。
補足情報(FW/ツールのバージョンなど)
・OS:Windows7 (32ビット)
・Excel:201014.0.4760.1000 (32ビット)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。