重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VBSにDrag&Dropしたファイル名を引数にマクロをコールしています。
Excelのマクロは問題なく動作したのですが、Wordのマクロを呼ぶとVBSで予期せぬエラーが起きてしまいます。

Excelのマクロを使うときは以下のコードです。このコードは問題なく動きます。
01: Dim oApp
02: Dim WshArgs
03: Dim oFileSystem
04: Dim MacroFileName
05: Set WshArgs = WScript.Arguments
06: Set oFileSystem = createObject("Scripting.FileSystemObject")
07: MacroFileName = oFileSystem.getParentFolderName(Wscript.ScriptFullName)&"xxx.xlsm"
08: Set oApp = CreateObject("Excel.Application")
09: oApp.Visible = True
10: oApp.Workbooks.Open MacroFileName
11: oApp.Run "MacroName",WshArgs(0)
12: ' マクロ付ファイルは自身の中で閉じる

Wordのマクロを使うときは、以下の行だけ変更しました。
07: MacroFileName = oFileSystem.getParentFolderName(Wscript.ScriptFullName)&"xxx.docm"
08: Set oApp = CreateObject("Word.Application")
10: oApp.Documents.Open MacroFileName

すると、Wordを開きマクロを実行し、マクロ内の記述によりWordを終了します。
しかし、VBSにて11行目2文字目で予期せぬエラーが発生します。
引数なしのマクロであればWordでも問題なく動作します。

A 回答 (1件)

以下のようなコードでやってみましたが、特に問題は発生しませんね。


おそらく、Wordに搭載されているマクロ自体の問題ではありませんか?


'//
Dim oApp
Dim WshArgs
Dim oFileSystem
Dim MacroFileName
Set WshArgs = WScript.Arguments
Set oFileSystem = createObject("Scripting.FileSystemObject")
MacroFileName = oFileSystem.getParentFolderName(Wscript.ScriptFullName)&"\Test1.docm"
Set oApp = CreateObject("Word.Application")
oApp.Visible = True
oApp.Documents.Open MacroFileName
oApp.Run "MacroName",WshArgs(0)
'//

ちなみに、ExcelもWordも同じ内容のマクロを使っています。
Sub MacroName(arg As String)
arg = LCase(arg)
If arg = "t" Then
MsgBox Time
ElseIf arg = "d" Then
MsgBox Date
Else
MsgBox Date & " " & Time
End If
End Sub
    • good
    • 0
この回答へのお礼

Wordのマクロを変更し、VBSからアプリを終了するようにしたらうまくいきました。ありがとうございました。

お礼日時:2016/07/15 20:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!