実現したいこと
VBSファイルをタスクスケジューラで実行させたいです。
●以下参考URLに沿って設定したのですが、実行できませんでした。
参考サイト:https://plus-info-tech.com/macro-auto-run
※PCはログオン状態で実施しました。
発生している問題・エラーメッセージ
●以下実行ボタンを押しても、トリガー設定しても動作しませんでした。
該当のソースコード
VBS
1Dim excelApp,macro 2 3file = WScript.Arguments(0) 4macro = WScript.Arguments(1) 5 6Set excelApp = CreateObject("Excel.Application") 7 8excelApp.Visible = False 'Excelを非表示にする 9excelApp.DisplayAlerts = False 'ポップアップメッセージを非表示にする 10excelApp.AutomationSecurity = 1 'マクロを有効にする 11 12'Excelファイルを読み取り専用で開く 13excelApp.Workbooks.Open file,3,False 14 15'WScript.Echo "---マクロを実行します---" 16 17'マクロを実行する 18excelApp.Run macro 19 20'WScript.Echo "---マクロの実行が完了しました---" 21 22'Excelを終了する 23excelApp.Quit 24 25Set excelApp = Nothing
VBA
1Sub 転記() 2 Path = "\\vvv\www\xxx\yyy" ’vvv,www,xxx,yyyはパス名になります。 3 Workbooks.Add 'ファイル作成 4 ThisWorkbook.Sheets("A").Copy After:=ActiveWorkbook.Sheets(Sheets.Count) '新規ファイルの最終シートへコピー 5 Application.DisplayAlerts = False 'メッセージ非表示※上書き保存 6 For Each ws In Sheets 7 If ws.Name <> "A" Then ws.Delete 'ワークシート名が"溶接機一覧"以外は削除 8 Next ws 9 ActiveWorkbook.SaveAs Filename:=Path & "\" & "一覧" '保存 10 ActiveWorkbook.Close '新規ファイル閉じる 11 Application.DisplayAlerts = True 'メッセージ表示※上書き保存 12 13End Sub 14
試したこと
●コマンドプロンプト上では問題なくVBScriptを実行する事が出来ました。
補足情報(FW/ツールのバージョンなど)
●VBA実行後上書きされるファイル保管場所
※朱字はパス名になります。
ここにより詳細な情報を記載してください。
追加資料
「ユーザーがログインしていなかった」と記述されているため、
ログオンしているとご説明されていますが、ログオンしていないことが事実ではないかと思います。
トリガーの設定はどのようになっているのでしょうか?
スタートアップ時になっているのでしたら、PC起動からログインするまでの間に
タスクが実行されている可能性があるのではないでしょうか?
トリガーを時間指定(確実にログオンしている時間)にして、試してみては如何でしょうか?
もう一つ考えられることとしては、ログインしているユーザがAであり、
タスク実行時に使うユーザがBになっている場合でも
発生するのでないでしょうか?
ご連絡ありがとうございます。
①トリガー設定につきまして
スケジュールに従うで時間設定をしましたが、VBAが実行されませんでした。
追加資料の通り
ログインユーザーは自分自身の為、他ユーザーで使用は試しておりません。
「ユーザーがログインしていなかった」とエラーが出ているのに、矛盾しますね。
では、大きく原因を切り分けていくのはどうでしょう。
実行するものをスクリプトではなく、メモ帳か何かにしてみては?
コマンドプロンプトからのスクリプト実行で問題ないことが確認できているので
メモ帳に変えた場合は、同様に動かないはず?
当方の環境で、notepad.exeの実行にて試したところ、問題なく動作しました。
返信ありがとうございます。
お手数お掛けしますが、VBScript からexe化はどうのように行えばよろしいでしょうか?
拡張子を変えるだけでしょうか?
スクリプトをexeに変換してということではなく、
下記を実行してみたらどうですか?と提案しました。
C:\Windows\System32\notepad.exe
目的は、大きく原因を切り分けるためです。
ありがとうございます。
以下操作パターンでトライしましたが、実行できませんでした。
・パターン1
プログラム/スクリプト
C:\Windows\System32\notepad.exe
・パターン2
プログラム/スクリプト
"C:\Windows\System32\notepad.exe"
・パターン3
プログラム/スクリプト
C:\Windows\System32\notepad.exe
開始(オプション)
C:\Windows\System32\
・パターン4
プログラム/スクリプト
"C:\Windows\System32\notepad.exe"
開始(オプション)
"C:\Windows\System32\"
以上の結果から、タスクスケジューラを起動する事が出来ていない可能性がありそうです。
以下Excelファイルで実行すると、タスクスケジューラで実行は出来ました。
プログラム/スクリプト
C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx
デスクトップにnotepad.exeをコピーして、スケジューラから、動作させることはできますか?
デスクトップでもスケジューラからの動作不可でした。
うーーん。おかしいですね。
なんで、
C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsxの場合は起動できて、
C:\Users\個人情報.SWN\Desktop\notepad.exeの場合は、起動できないのかわからないなー。
なんか第3者にはわからない何かの違いが絶対にあると思うのですが。。。。
申し訳ないですが、思いつかない。。。。
そうなんですよね、Excelファイルは実行できるのですが、vbs,exeにすると実行できないんですよね。
因みにですが、kikukikuさんは、タスクスケジューラの操作設定は以下で行いましたか?
プログラム/スクリプト
C:\Windows\System32\notepad.exe
上記の通りで動作しています。
ちなみに自身のアカウントでログインしている状態で、
タスクを新規作成し、上記notepat.exeを設定し、
実行ボタンを押下しましたら、メモ帳が起動しました。
あ、ウイルスチェックか何かのアプリは入っていますか?
入っていたら、一時的に無効にできませんか?
※たぶん関係ないとは思うのですが、念のため。
返信ありがとうございます。
cybereasonというウイルスチェックソフトが入っています。
一時的に無効にして、実行したのですが動作しませんでした。😢
ちなみに下記を実行したときのエラー内容は、「ログオンしていなかった」ですか?
C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx
C:\Users\個人情報.SWN\Desktop\notepad.exe
別のPCで同じことを試せませんか?
整理してみましょう。
・タスクスケジューラから下記を起動できた。
このことからタスクスケジューラの設定には問題ないことがわかる。
C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx
・タスクスケジューラからnotepad.exeやスクリプトは起動できなかった。
・notepad.exe、スクリプトの単体起動は問題なく動作する。
・ウイルスチェックは一時的に無効にしたが、問題は解消されなかった。
上記のことから、何らかの機能がnotepad.exeやスクリプトの起動を妨げていると
考えるのが妥当と思います。
システム管理者がおそらく存在すると思うので
何かしらの制限が入っていないか相談してみることをお勧めます。
はい、「ログインしていなかった」というエラーになります。
表示内容としましては、質問分にあります。”●タスクスケジューラの履歴は以下になっていました。”の添付画像の通りになります。
承知しました、他PCで実施してみます。
他PCで以下タスクスケジューラで実行したところ、動作しました。
プログラム/スクリプト
C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx
整理していただきありがとうございます。
PCの制限を確認してみます。
全般画面の「最上位の特権で実行する」にチェックを入れた場合はどうなるでしょうか?
同様な結果になってしまいます。
>他PCで以下タスクスケジューラで実行したところ、動作しました。
>プログラム/スクリプト
>C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx
他PCでのVBスクリプトは実行できなかった?
下記のパスは、ログインしているユーザのデスクトップですか?
C:\Users\個人情報.SWN\Desktop
もし上記が違うのであれば、ログインしているユーザ自身のデスクトップに、
エクセルとVBスクリプトとnotepadの3種をコピーして
タスクスケジューラからの起動を確認したい。
C:\Windows\System32\notepad.exeにあるexeをデスクトップにコピーした場合、
exeは起動できないようです。
すみません。これは間違いですのでテストの意味がないです。
test.vbsのVBスクリプトを用意。
内容は「MsgBox "Hello, World"」のみ。
上記スクリプトをログインしている自身のデスクトップに配置。
スケジューラから上記スクリプトを起動することを確認しました。
上記同じことをできますか?
上記「MsgBox "Hello, World"」実行できました。
お、だとするとスクリプトの中に問題があるということですね。
どこまで正常に進んでいるかどうか確認するために、
MsgBoxをいろいろな箇所に入れていって、
失敗する行を探すのが良いと思います。
マクロ内のファイル保存先をサーバでなくローカルフォルダにしても同じですか?
vbs実行する事が出来ました。
原因は、タスクスケジューラ全般設定のユーザがローカルユーザになっていた事になります。
親身になって調べていただき、ありがとうございました。
回答1件
あなたの回答
tips
プレビュー