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

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

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

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

VBScript

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

Q&A

解決済

1回答

1979閲覧

VBScriptによる更新

jabe

総合スコア43

VBA

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

VBScript

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

0グッド

0クリップ

投稿2022/06/07 09:26

編集2022/06/08 00:14

実現したいこと

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

●VBAファイルとvbs保管場所
イメージ説明
・VBAファイル中身
イメージ説明
●VBA実行後上書きされるファイル保管場所
※朱字はパス名になります。
イメージ説明
●cmd
イメージ説明

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

VBSエラー内容
イメージ説明

該当のソースコード

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に沿って設定したのですが、実行できませんでした。
イメージ説明
●設定内容
イメージ説明
●エラー内容
イメージ説明

ここにより詳細な情報を記載してください。

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

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

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

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

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

otn

2022/06/07 10:14

vbsからVBAの起動はやったこと無いのですが、 少なくとも、VBAの Application.Quit の後にも文があるのが変ですね。 Application.Quit はExcelを終了させます。
YT0014

2022/06/07 10:48

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/
jabe

2022/06/08 00:17

otnさん回答ありがとうございます。 jinojiさんのコメントにあります通り、vbsとvbar両コードにexcelApp.Quitがある為、重複してしまっているという事ですよね?
jabe

2022/06/08 00:26

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
guest

回答1

0

ベストアンサー

Excelマクロの方の最後4行をコメントアウトしてみては。

投稿2022/06/07 10:09

jinoji

総合スコア4585

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

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

jabe

2022/06/08 00:08

回答ありがとうございます。 該当コードコメントアウトしましたら、cmd上で動作できました。 質問が連続してお手数お掛けしますが、参考サイトにあります。 タスクスケジューラでの実行を試みたのですが、実行する事が出来ませんでした。 対処方法を教えていただけないでしょうか? 事象は補足情報へ追加させていただきます。
jinoji

2022/06/08 13:31

それは別の質問を立てた方がいいと思います。その方がたくさんの人の目に触れるでしょうから。
jabe

2022/06/08 23:25

ご連絡ありがとうございます。 承知しました、別質問を立てさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問