実現したいこと
●VBSファイルからexcelファイルのVBAを実行したいです。
内容:VBAファイルのAシートを、所定場所のファイルに上書きするコードになっています。
以下参考サイトを再現しようとしたら、cmdで実行するとエラーになってしまいました。
※エラーはVBA処理は実行できているが、エラーメッセージが出る結果となっています。
対処方法を教えていただけないでしょうか?
参考サイト:https://plus-info-tech.com/macro-auto-run

●VBAファイルとvbs保管場所

・VBAファイル中身

●VBA実行後上書きされるファイル保管場所
※朱字はパス名になります。

●cmd

発生している問題・エラーメッセージ
該当のソースコード
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 13 Application.Quit 14 Application.DisplayAlerts = False 'メッセージを非表示に設定 15 ThisWorkbook.Close False 16 Application.DisplayAlerts = True 'メッセージを非表示に設定 17 18End Sub
試したこと
VBSファイルでは以下トライもしましたが、同じエラーが出てしまいました。
Dim excelApp,macro → Dim excelApp,file,macro
excelApp.Quit → 'excelApp.Quit
補足情報(FW/ツールのバージョンなど)
①VBSファイルがタスクスケジューラ上で実行できないエラー
●以下参考URLに沿って設定したのですが、実行できませんでした。

●設定内容

●エラー内容

ここにより詳細な情報を記載してください。
vbsからVBAの起動はやったこと無いのですが、
少なくとも、VBAの Application.Quit の後にも文があるのが変ですね。
Application.Quit はExcelを終了させます。
Excelでは、マクロはSub(プロシージャ)とはことなるものなのですが、マクロの実行で正しいのでしょうか?
正しいのなら、マクロの定義をご提示ください。
また、プロシージャを直接呼ばれるのなら、モジュール名.プロシージャ名が必要だという情報もありましたので、モジュール名を追加しての実行を試されてはいかがでしょう。
https://excel-vba.work/2021/04/16/%E3%80%90vba%E3%80%91vbscript%E3%81%8B%E3%82%89vba%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B/
otnさん回答ありがとうございます。
jinojiさんのコメントにあります通り、vbsとvbar両コードにexcelApp.Quitがある為、重複してしまっているという事ですよね?
YT0014さん回答ありがとうございます。
マクロとSub(プロシージャ)を同じで定義していました。
リンク先コードでもトライしてみました。
15行目objExcel.Run "Module1.転記"でエラーが出てしまいました。
Option Explicit
Dim objExcel
'Excelオブジェクトを取得
Set objExcel = CreateObject("Excel.Application")
'ExcelファイルをOPEN
objExcel.Workbooks.Open("C:\テスト\一覧.xlsm")
'Excelファイルを非表示
objExcel.Visible = False
'「testModule」のSubプロシージャ「sample」を実行
objExcel.Run "Module1.転記"
'Excelを終了
objExcel.Quit
'後片付け
Set objExcel = Nothing
回答1件
あなたの回答
tips
プレビュー
