<実現したいこと>
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」フォルダを作成しタスクを実行。
お力添え頂けますと幸いです。
あなたの回答
tips
プレビュー