🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

Q&A

1回答

5406閲覧

「前回正常に起動しませんでした。・・・」の エラーが出ているため、Windowsタスクスケジューラからマクロを自動実行できない

ahi-

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

0グッド

0クリップ

投稿2020/12/15 08:16

前提・実現したいこと

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ビット)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

新規エクセルファイルにコードをコピペしてそっちを実行してみてはどうですか。
似た様な事象で、アプリ起因でなくファイル起因の事象だった経験があります。

そもそもですが、エクセルのバージョンがかなり古いので新しいものを導入した方がよいと思います。
ご利用のバージョンは既にサポートが切れてると思います。

投稿2020/12/15 14:00

subka

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問