質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

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

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

解決済

タスクスケジューラによるVBScript実行

jabe
jabe

総合スコア36

VBA

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

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

1回答

0評価

0クリップ

878閲覧

投稿2022/06/08 23:49

編集2022/06/13 16:41

実現したいこと

VBSファイルをタスクスケジューラで実行させたいです。
●以下参考URLに沿って設定したのですが、実行できませんでした。
参考サイト:https://plus-info-tech.com/macro-auto-run
※PCはログオン状態で実施しました。

●タスクスケジューラ設定状況
イメージ説明
イメージ説明
イメージ説明

発生している問題・エラーメッセージ

●以下実行ボタンを押しても、トリガー設定しても動作しませんでした。
イメージ説明

●タスクスケジューラの履歴は以下になっていました。
イメージ説明

該当のソースコード

VBS

Dim excelApp,macro file = WScript.Arguments(0) macro = WScript.Arguments(1) Set excelApp = CreateObject("Excel.Application") excelApp.Visible = False 'Excelを非表示にする excelApp.DisplayAlerts = False 'ポップアップメッセージを非表示にする excelApp.AutomationSecurity = 1 'マクロを有効にする 'Excelファイルを読み取り専用で開く excelApp.Workbooks.Open file,3,False 'WScript.Echo "---マクロを実行します---" 'マクロを実行する excelApp.Run macro 'WScript.Echo "---マクロの実行が完了しました---" 'Excelを終了する excelApp.Quit Set excelApp = Nothing

VBA

Sub 転記() Path = "\\vvv\www\xxx\yyy" ’vvv,www,xxx,yyyはパス名になります。 Workbooks.Add 'ファイル作成 ThisWorkbook.Sheets("A").Copy After:=ActiveWorkbook.Sheets(Sheets.Count) '新規ファイルの最終シートへコピー Application.DisplayAlerts = False 'メッセージ非表示※上書き保存 For Each ws In Sheets If ws.Name <> "A" Then ws.Delete 'ワークシート名が"溶接機一覧"以外は削除 Next ws ActiveWorkbook.SaveAs Filename:=Path & "\" & "一覧" '保存 ActiveWorkbook.Close '新規ファイル閉じる Application.DisplayAlerts = True 'メッセージ表示※上書き保存 End Sub

試したこと

●コマンドプロンプト上では問題なくVBScriptを実行する事が出来ました。

補足情報(FW/ツールのバージョンなど)

●VBAファイルとvbs保管場所
イメージ説明
イメージ説明

●VBA実行後上書きされるファイル保管場所
※朱字はパス名になります。
イメージ説明
ここにより詳細な情報を記載してください。

追加資料

①トリガー設定
→起動条件が満たされていないとエラーが出てしまいます。
イメージ説明
イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

kikukiku

2022/06/09 00:16

「ユーザーがログインしていなかった」と記述されているため、 ログオンしているとご説明されていますが、ログオンしていないことが事実ではないかと思います。 トリガーの設定はどのようになっているのでしょうか? スタートアップ時になっているのでしたら、PC起動からログインするまでの間に タスクが実行されている可能性があるのではないでしょうか? トリガーを時間指定(確実にログオンしている時間)にして、試してみては如何でしょうか?
kikukiku

2022/06/09 02:51

もう一つ考えられることとしては、ログインしているユーザがAであり、 タスク実行時に使うユーザがBになっている場合でも 発生するのでないでしょうか?
jabe

2022/06/09 04:07

ご連絡ありがとうございます。 ①トリガー設定につきまして スケジュールに従うで時間設定をしましたが、VBAが実行されませんでした。 追加資料の通り
jabe

2022/06/09 04:10

ログインユーザーは自分自身の為、他ユーザーで使用は試しておりません。
kikukiku

2022/06/09 04:17

「ユーザーがログインしていなかった」とエラーが出ているのに、矛盾しますね。 では、大きく原因を切り分けていくのはどうでしょう。 実行するものをスクリプトではなく、メモ帳か何かにしてみては? コマンドプロンプトからのスクリプト実行で問題ないことが確認できているので メモ帳に変えた場合は、同様に動かないはず?
kikukiku

2022/06/09 04:25

当方の環境で、notepad.exeの実行にて試したところ、問題なく動作しました。
jabe

2022/06/09 04:33

返信ありがとうございます。 お手数お掛けしますが、VBScript からexe化はどうのように行えばよろしいでしょうか? 拡張子を変えるだけでしょうか?
kikukiku

2022/06/09 04:50

スクリプトをexeに変換してということではなく、 下記を実行してみたらどうですか?と提案しました。 C:\Windows\System32\notepad.exe
kikukiku

2022/06/09 04:52

目的は、大きく原因を切り分けるためです。
jabe

2022/06/09 06:27

ありがとうございます。 以下操作パターンでトライしましたが、実行できませんでした。 ・パターン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\"
jabe

2022/06/09 06:27

以上の結果から、タスクスケジューラを起動する事が出来ていない可能性がありそうです。
jabe

2022/06/09 06:33

以下Excelファイルで実行すると、タスクスケジューラで実行は出来ました。 プログラム/スクリプト C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx
kikukiku

2022/06/09 07:00

デスクトップにnotepad.exeをコピーして、スケジューラから、動作させることはできますか?
jabe

2022/06/09 07:09

デスクトップでもスケジューラからの動作不可でした。
kikukiku

2022/06/09 09:16 編集

うーーん。おかしいですね。 なんで、 C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsxの場合は起動できて、 C:\Users\個人情報.SWN\Desktop\notepad.exeの場合は、起動できないのかわからないなー。
kikukiku

2022/06/09 09:19

なんか第3者にはわからない何かの違いが絶対にあると思うのですが。。。。 申し訳ないですが、思いつかない。。。。
jabe

2022/06/09 09:26

そうなんですよね、Excelファイルは実行できるのですが、vbs,exeにすると実行できないんですよね。 因みにですが、kikukikuさんは、タスクスケジューラの操作設定は以下で行いましたか? プログラム/スクリプト C:\Windows\System32\notepad.exe
kikukiku

2022/06/09 09:56

上記の通りで動作しています。 ちなみに自身のアカウントでログインしている状態で、 タスクを新規作成し、上記notepat.exeを設定し、 実行ボタンを押下しましたら、メモ帳が起動しました。
kikukiku

2022/06/09 09:57

あ、ウイルスチェックか何かのアプリは入っていますか? 入っていたら、一時的に無効にできませんか? ※たぶん関係ないとは思うのですが、念のため。
jabe

2022/06/09 23:17

返信ありがとうございます。 cybereasonというウイルスチェックソフトが入っています。 一時的に無効にして、実行したのですが動作しませんでした。😢
kikukiku

2022/06/09 23:47

ちなみに下記を実行したときのエラー内容は、「ログオンしていなかった」ですか? C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx C:\Users\個人情報.SWN\Desktop\notepad.exe
kikukiku

2022/06/09 23:47

別のPCで同じことを試せませんか?
kikukiku

2022/06/09 23:56

整理してみましょう。 ・タスクスケジューラから下記を起動できた。  このことからタスクスケジューラの設定には問題ないことがわかる。  C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx ・タスクスケジューラからnotepad.exeやスクリプトは起動できなかった。 ・notepad.exe、スクリプトの単体起動は問題なく動作する。 ・ウイルスチェックは一時的に無効にしたが、問題は解消されなかった。 上記のことから、何らかの機能がnotepad.exeやスクリプトの起動を妨げていると 考えるのが妥当と思います。 システム管理者がおそらく存在すると思うので 何かしらの制限が入っていないか相談してみることをお勧めます。
jabe

2022/06/09 23:58

はい、「ログインしていなかった」というエラーになります。 表示内容としましては、質問分にあります。”●タスクスケジューラの履歴は以下になっていました。”の添付画像の通りになります。 承知しました、他PCで実施してみます。
jabe

2022/06/10 00:02

他PCで以下タスクスケジューラで実行したところ、動作しました。 プログラム/スクリプト C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx
jabe

2022/06/10 00:03

整理していただきありがとうございます。 PCの制限を確認してみます。
kikukiku

2022/06/10 00:06

全般画面の「最上位の特権で実行する」にチェックを入れた場合はどうなるでしょうか?
jabe

2022/06/10 00:11

同様な結果になってしまいます。
kikukiku

2022/06/10 00:11

>他PCで以下タスクスケジューラで実行したところ、動作しました。 >プログラム/スクリプト >C:\Users\個人情報.SWN\Desktop\業務棚卸シート.xlsx 他PCでのVBスクリプトは実行できなかった?
kikukiku

2022/06/10 00:13

下記のパスは、ログインしているユーザのデスクトップですか? C:\Users\個人情報.SWN\Desktop
kikukiku

2022/06/10 00:17

もし上記が違うのであれば、ログインしているユーザ自身のデスクトップに、 エクセルとVBスクリプトとnotepadの3種をコピーして タスクスケジューラからの起動を確認したい。
kikukiku

2022/06/10 03:54

C:\Windows\System32\notepad.exeにあるexeをデスクトップにコピーした場合、 exeは起動できないようです。 すみません。これは間違いですのでテストの意味がないです。
kikukiku

2022/06/10 04:42

test.vbsのVBスクリプトを用意。 内容は「MsgBox "Hello, World"」のみ。 上記スクリプトをログインしている自身のデスクトップに配置。 スケジューラから上記スクリプトを起動することを確認しました。 上記同じことをできますか?
jabe

2022/06/10 10:00

上記「MsgBox "Hello, World"」実行できました。
kikukiku

2022/06/10 10:50

お、だとするとスクリプトの中に問題があるということですね。 どこまで正常に進んでいるかどうか確認するために、 MsgBoxをいろいろな箇所に入れていって、 失敗する行を探すのが良いと思います。
jinoji

2022/06/12 13:25

マクロ内のファイル保存先をサーバでなくローカルフォルダにしても同じですか?
jabe

2022/06/13 07:40

vbs実行する事が出来ました。 原因は、タスクスケジューラ全般設定のユーザがローカルユーザになっていた事になります。 親身になって調べていただき、ありがとうございました。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。