【Excel VBA】Application.Run実行時に「実行時エラー’1004’」が出る原因と対処法

Excel
スポンサーリンク

今回は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.xlamharibona_xlam_testを呼び出して実行する、という感じになっています。

実行するとマクロを呼び出して実行できているのが分かるかと思います。

エラーが発生する原因_原因_1

ここで注意しなければならないのがマクロファイルのパスとマクロ名の指定で、パスは”(シングルクォーテーション:半角)で囲み、マクロ名は頭に!(びっくりマーク:半角)を付けてあげる必要があります。

'呼び出し先のファイル名
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に関する記事を不定期で投稿していますので、是非ご覧ください!

コメント

タイトルとURLをコピーしました