今回はApplication.Run実行時に「実行時エラー’1004’:マクロ’【ファイルパス】’を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」が出る原因と対処法を紹介したいと思います。
Application.Runについては過去に紹介していますので、こちらも併せてご覧ください!
エラーが発生する原因
原因
結論から言うとApplication.Runで指定する文字列の形式に誤りがある可能性があります。
もっと言うと、”(シングルクォーテーション:半角)や!(びっくりマーク:半角)が正しい位置に入力されていない・そもそも入力していない可能性があります。
以下のコードを使って説明します。
'【実行元マクロ】
'test_ApplicationRun.xlsm
Sub test_ApplicationRun_xlam()
Dim targetAppFullName As String
Dim targetAppFileName As String
Dim targetAppMacroName As String
'呼び出し先のファイル名
targetAppFileName = "msg_haribona.xlam"
'呼び出し先のファイルに入っているマクロ名
targetAppMacroName = "haribona_xlam_test"
'パスとファイル名とマクロ名を指定の形にする
targetAppFullName = "'" & ThisWorkbook.Path & "\" & targetAppFileName & "'" & _
"!" & targetAppMacroName
'マクロを呼び出して実行する
Application.Run targetAppFullName
End Sub
'【実行先マクロ】
'msg_haribona.xlam
Sub haribona_xlam_test()
MsgBox "はりぼなブログへようこそ!"
End Sub
コードについてざっくり説明すると、実行したマクロブックと同じ階層にあるmsg_haribona.xlam
のharibona_xlam_test
を呼び出して実行する、という感じになっています。
実行するとマクロを呼び出して実行できているのが分かるかと思います。
ここで注意しなければならないのがマクロファイルのパスとマクロ名の指定で、パスは”(シングルクォーテーション:半角)で囲み、マクロ名は頭に!(びっくりマーク:半角)を付けてあげる必要があります。
'呼び出し先のファイル名
targetAppFileName = "msg_haribona.xlam"
'呼び出し先のファイルに入っているマクロ名
targetAppMacroName = "haribona_xlam_test"
'パスとファイル名とマクロ名を指定の形にする
targetAppFullName = "'" & ThisWorkbook.Path & "\" & targetAppFileName & "'" & _
"!" & targetAppMacroName
'展開後(ThisWorkbook.Pathが「C:\ExcelVBA」の場合)
targetAppFullName = "'C:\ExcelVBA\msg_haribona.xlam'!haribona_xlam_test"
実際に試してみると分かりますが、シングルクォーテーションで囲っていなかったり、びっくりマークを付けていなかったりすると正しい形式でないと判断され、実行時エラー’1004’が発生してしまうというわけです。
'どちらも正しい形式でない為、Application.Run実行時にエラーになる
'シングルクォーテーションで囲んでいない
targetAppFullName = ThisWorkbook.Path & "\" & targetAppFileName & "!" & targetAppMacroName
'びっくりマークがついていない
targetAppFullName = "'" & ThisWorkbook.Path & "\" & targetAppFileName & "'" & targetAppMacroName
対処法
対処法としては、もうシンプルにコードを記述する段階で付け忘れていないか確認しましょう。
- パスをシングルクォーテーション(半角)で囲んでいるか
- マクロ名の頭にびっくりマーク(半角)を付けているか
ちなみに余談ですが、C:\ExcelVBA
といったパスがなく、ファイル名だけの場合でもシングルクォーテーションで囲まなければなりません(パスが付いているか付いていないかというだけの違い)。
'パスが付いてなくても囲む必要がある
targetAppFullName = "'" & targetAppFileName & "'" & "!" & targetAppMacroName
= "'msg_haribona.xlam'!haribona_xlam_test"
まとめ
Application.Run実行時に「実行時エラー’1004’:マクロ’【ファイルパス】’を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」が出る原因と対処法について紹介しました。
パスもマクロ名も間違ってないのに実行できない・・・
という場合は、以下2点が正しく反映できているか確認するようにしましょう!
- パスをシングルクォーテーション(半角)で囲んでいるか
- マクロ名の頭にびっくりマーク(半角)を付けているか
このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!
コメント