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

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

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

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

VBScript

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

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

0回答

5947閲覧

タスクスケジューラーでVBScriptファイルを実行する方法について

SkyRocket

総合スコア26

VBA

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

VBScript

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

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2020/03/23 17:49

編集2020/03/25 11:15

<実現したいこと>

VBSファイルをダブルクリックした時に実行される動作内容と、タスクスケジューラーで実行した時の動作内容が同一になるようにしたいです。

作成しているVBSファイルは処理が複雑のため、次のように処理を簡略化したファイルで行いたいことの詳細をお伝えさせて頂きたいと思います。

手順1.
次のようにファイルを用意します。
「C:\test\」に「Book1.xlsm」「sample.vbs」を用意。

〇Book1.xlsm のマクロ内容(標準モジュール「Module1」):

VBA

1 Public Sub macrotest() 2  Cells(1, 1) = Time 3 End Sub

 
〇sample.vbs の記載コード:

vbscript

1 Dim obj 2 Set obj = GetObject(,"Excel.Application") 3 obj.Run "macrotest"

 
手順2.
起動済みのExcelは全て閉じた状態で「C:\test\Book1.xlsm」をダブルクリックで起動。

手順3.
手順2のExcelが起動した状態で、「C:\test\sample.vbs」をダブルクリックで実行するとセルA1に現在時刻(Time)が記載される。(ダブルクリックでのA1セル更新はできています。

<実現したいこと(詳細)>

・この「手順3」の動作をタスクスケジューラーのタスクで実行させA1を更新させたいのですが『ActiveXコンポーネントはオブジェクトを作成できません。:'GetObject'』と表示されて上手く動作しません。
・ファイル「Book1.xlsm」が2重に起動しないようにしたいです。
既にあるVBSファイルはなるべく変更せずに解決したいです

<補足>

 ・タスクスケジューラーの設定は「ユーザーがログオンしているときのみ実行する」を選択し「最上位の特権で実行する」にチェックしています。

 ・動作環境:Windows10 64bit

<試したこと>

ネットの情報を色々試しましたがダブルクリックした時と同じ動作になりませんでした。
主に試したことは次のことです。

A:
「C:\test\」の場所に「sample.bat」を作成しタスクスケジューラーからこのファイルを実行させてみましたが、上手くいきませんでした。同じエラーができます。
(ダブルクリックすると期待する動作(A1がTimeで更新)をします。)
sample.bat の記載コード:

shell

1 @echo off 2 C:\test\sample.vbs

B:
カレントディレクトリを指定したタスクの実行。

C:
タスクスケジューラーの開始(オプション)を「C:\test\」にしたタスクの実行。

D:
「C:\Program Files\Common Files\Microsoft Shared\」に「DAO」フォルダがないですが、
「C:\Program Files (x86)\Common Files\Microsoft Shared\」には「DAO」フォルダがあり、その中に「dao360.dll」があることを確認。
E:
64bitのPCで「%SystemRoot%\SysWOW64\config\systemprofile\」に「Desktop」フォルダを作成しタスクを実行。

お力添え頂けますと幸いです。

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

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

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

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

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

otn

2020/03/23 23:40

再現しません。ちゃんとセルに時刻が入ります。
otn

2020/03/24 00:52

テスト中は、On Error Resume Next を外したほうがいいですね。
SkyRocket

2020/03/24 16:20

ご指摘頂きありがとうございます。そうなんですね。私の場合はExcel起動中にvbsファイルをダブルクリックで実行するとセルに時刻が入りますが、タスクスケジューラーのタスクからの実行ではエラーになってしまいます。タスクスケジューラーのタスクのプロパティの「操作」タブ内の「プログラム/スクリプト」「引数の追加(オプション)」「開始(オプション)」はどのように設定されているかご教示いただけませんでしょうか。
otn

2020/03/25 04:40

プログラム: vbsファイルのフルパス 引数: 空 開始: 空 です。 64bit 32bitの問題ですかね。 プログラム: C:\Windows\System32\wscript.exe 引数: vbsファイルのフルパス 開始: 空 プログラム: C:\Windows\Syswow64\wscript.exe 引数: vbsファイルのフルパス 開始: 空 を両方試してみてください。ただ、私の環境では、どちらもOKでした。 Windows10/64bit Office2013/32bit
end-u

2020/03/25 10:39

> ・タスクスケジューラーの設定は「ユーザーがログオンしているときのみ実行する」を選択し「最上位の特権で実行する」にチェックしています。 「最上位の特権で実行する」のチェックを外して実行してみてください または、「最上位の特権で実行する」必要がある場合、Excelも「管理者として実行」する必要があるのではないでしょうか
SkyRocket

2020/03/25 11:20

皆様、ご協力いただきありがとうございます。 「最上位の特権で実行する」のチェックを外してたところ、できました。 諦めかけていたので、とても嬉しいです。ありがとうございます。
otn

2020/03/25 11:26

> 「最上位の特権で実行する」にチェックしています。 見落としてました。何故にそんなチェックを??
SkyRocket

2020/03/26 14:38

返信が遅れました。特に理由はなく付けていました。
radames1000

2020/04/07 05:58

解決されているようですので、自己解決もしくは、どなたかが回答されてベストアンサーをつけていただくのはいかがでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問