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

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

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

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

Q&A

2回答

3303閲覧

実行時エラーについて

hisasinana

総合スコア7

VBA

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

0グッド

0クリップ

投稿2021/04/30 12:53

編集2021/05/05 08:11

excelVBA超初心者です。
office2013のバージョンです。
ボリュウーム(E:)→できる大事典→501095→第2章→2-2→渋谷.xlsmのsub test1
ボリュウーム(E:)→できる大事典→501095→第2章→2-2→2-2_003z(run).xlsmのsub test2
test2のApplication.Run "渋谷.xlsm!test"を実行して、エラーが起こらない状態でEフォルダ、
渋谷.xlsmは開きたいのですが、何故かエラーが起こり分かりません。何が原因でしょうか?

どなたか分かる方是非宜しくお願い致しますー。

渋谷.xlsm

Sub test1() Call test2 end sub

2-2_003z(run).xlsm

Sub test2() Application.Run "'渋谷.xlsm'!test1" end sub

イメージ説明

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

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

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

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

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

guest

回答2

0

回答になるかもしれない。ということで、回答に記載します。

私の環境で、そのエラーメッセージが出るのは、以下のパターンがありました。
・渋谷.xlsmの標準モジュールにtestという関数がない。
・渋谷.xlsmのマクロが実行できない状態になっている。
例えばtestという関数が標準モジュールに複数あるとか、構文エラーがどこかにあるとか
こちらの場合であれば、渋谷.xlsmを起動して、直接testの関数が実行できるかを確認になるでしょうか。

他にそのメッセージが出る場合は、まだわかりませんが
ネットでそのエラーメッセージで検索するとセキュリティー関係の設定が云々とか書いてありましたね。

ただ、セキュリティの設定が違っていても、パスが違っていても提示のメッセージは出ませんでした。
バージョンによる誤差かもしれません。

色々確認してみてそれでも駄目であれば、それぞれの確認した結果を質問に追記すればよいかと思います。

(追記)
いろいろ確認方法を追記します。
(1)
Sub test2()
Debug.Print CurDir
Application.Run "渋谷.xlsm!test"
end sub
として実行したらイミディエイトウィンドウに、E:\と表示されるか。

(2)
渋谷.xlsmのみを開き、VBE(VBAのコードを書くところ)において
メニューの
デバッグ>VBA Projectのコンパイル
を実行してエラーとなる箇所がないか。

エラー箇所があれば、すべて解消する。
もし、解消方法が不明なものがあれば、質問に追記でもいいかと思います。
(まぁ、すべて解消しなくても実行は出来ますが、実行できない問題もあるので
ソースが見れない状態では、こういう確認方法になります)

(2021/05/05の変更に対する追記)
1.現在提示のコードからは、提示のエラーメッセージは表示されません。
2.コードの改善案
(1)
渋谷.xlsmのコードは、標準モジュールに記載しているのでしょうか。
もし、標準モジュールに記載していないのであれば外部から今の形式で呼び出すことはできません。
標準モジュールを追加して、コードを記載するか、標準モジュールに記載しないのであれば
「Application.Run "'渋谷.xlsm'!Sheet1.test1"」というような記述に変更する必要があります。

(2)

VBA

1Sub test1() 2Call test2 3end sub 4```であれば「渋谷.xlsm」に「test2」が定義されていないので、エラーとなります。 5何をしたいのかわかりませんが、修正は必要です。 6 7(3) 82-2_003z(run).xlsmと渋谷.xlsmが同一のフォルダにあるのであれば2-2_003z(run).xlsmの処理は以下に修正した方が良いです。同一フォルダの「渋谷.xlsm」という意味になります。 9 10```VBA 11Public Sub test2() 12 ChDrive ThisWorkbook.Path 13 ChDir ThisWorkbook.Path 14 Application.Run "'渋谷.xlsm'!test1" 15End Sub

とりあえず、今思いつくのはこんな所でしょうか。

投稿2021/04/30 23:43

編集2021/05/05 09:11
xail2222

総合スコア1508

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

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

hisasinana

2021/05/01 11:31

返事遅くなってすみませんー。原因は分かりませんが、ひとまず、置いておこうと思いますー。
xail2222

2021/05/01 11:39

はい。質問に提示の内容だけでは、何が原因かはわからない質問だと思います。 こういう場合、質問は放置でいいのでしょうか。 まぁ。何かあれば、また追記や自己解決にすればいいかと思います。
hisasinana

2021/05/01 23:01

質問の内容が分からないー。とはスキル不足なよう気がしますー。自分はネットで分からない所は徹底的に調べます。分からないから質問しているのに、何が原因だか分からない質問ー。勉強が足りなよう気がしますー。
xail2222

2021/05/02 00:16 編集

煽りのコメントありがとうございます。長文でお返しします。 まず、初めに私が言った「こういう場合、質問は放置でいいのでしょうか。」は 貴方の今回の質問を放置と言う意味ではありますが 解決させないでおいておくのは、よくないな。と思ったための言葉です。 どちらかといえば、質問は解決済みにしていく方が良いと思っていますので。 対応しない方がよかったのかな。という意味ではありませんよ。 念のため。 >質問の内容が分からないー。とはスキル不足なよう気がしますー。 質問の内容はわかります。ただ、今の質問内容だけでは原因は「特定」できないという話ですよ。 >自分はネットで分からない所は徹底的に調べます。 なるほど。いいことですね。この質問もその一つという事でしょうか。 徹底的にやるというのに「原因は分かりませんが、ひとまず、置いておこうと思いますー。」 というのは矛盾した態度に思えますね。 あと原因の調べ方はネットだけではないですよ。念のため。 >分からないから質問しているのに、何が原因だか分からない質問ー。勉強が足りなよう気がしますー。 質問内容のエラーが生じる原因となる例は、2例回答で提示しましたよ。 他にもあるかもしれませんが、それがわからないのは確かに私の勉強不足かもしれませんね もし、本気で貴方が自分の問題を解決したいのであれば、そうですね。 渋谷.xlsmを呼び出す側の処理をもう少しきちんと記載し (例えば今のコードは一部だけしかないですよね?少なくともend subがないし) 渋谷.xlsm側の処理を全て記載するとかして あとOfficeのバージョンも記載したりすれば 回答者に原因をもう少し調べてもらえることは出来るかもしれないですね。 もし、徹底的に調べたいというのであればもう少し情報を出すことも必要だと思いますよ。
TanakaHiroaki

2021/05/02 22:41

途中からすみません。 「単純なブック指定のミス」以外の原因が思いつかないので私もスキル不足です。
hisasinana

2021/05/05 09:59 編集

親切に有難うございますー。今、Public Sub test2() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path Application.Run "'渋谷.xlsm'!test1" End Sub これを実行したのですが、Sub test1() Call test2←コンパイルエラー subまたはfunctionは定義されてません。 end sub 自分の環境はどうしてもエラーが出てしまいますー。これをひとまず、置いておこうと思います。(質問を捨てるという意味ではなく、質問を自分の中で保留しておいて、何か月後にしたら分かる時が来るかもしれません。excelを勉強した最初は全く分からず、分からなかった所が6か月後に分かりようになったのを覚えています。これと同じなのでないかと思っております。)、今、自分はVBAを書籍と、ネットで勉強しています。これは書籍に載っていて、これと似たような事をしたんですが、上手く行かず、ネットで調べて、またネットで調べたのを書籍に載っていたのと同様に、自分流にアレンジして、分からなくて、質問しましたー。自分の至らなかったコメントをしてしまい、お詫びと共に心から本当に有難うございますー。
xail2222

2021/05/05 10:14

置いておくとのことですが、とりあえずコメントだけしておきます。 >Sub test1() >Call test2←コンパイルエラー subまたはfunctionは定義されてません。 >end sub このエラーが出たという事は、渋谷.xlsmを呼び出せているという事になります。 Call test2でエラーが出るのは、追記の(2)で書いた通りかと思います。 もし「2-2_003z(run).xlsm」の「test2」を実行したいというのであれば 同じように ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path Application.Run "'2-2_003z(run).xlsm'!test2" というような呼び方をする必要があります。 これで無限ループになります。 ただ、関数を再帰的に何度も呼んでいる形のため 「28 :スタック領域が不足しています。」のエラーがエラーが出て終わりになります。 勉強のための練習のコードだと思いますので、とりあえずこうなるんだ。 と解釈出来ればいいかと思います。
jinoji

2021/05/05 10:28 編集

2-2_003z(run).xlsm のほうは Public Sub test2() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path Application.Run "'渋谷.xlsm'!test1" End Sub のままにしておいて、 渋谷.xlsmのコードを Sub test1() Call test2 End Sub Sub test2() MsgBox "OK" End Sub としたら多分エラーはなくなると思います。 <追記> 回答がかぶってしまいました。失礼しました。
xail2222

2021/05/05 10:33 編集

確かにエラーはなくなりますね。 渋谷.xlsm!testを呼び出すのが、そもそもの質問なのだから それでよかったのかもですね。 エラーが出なくなるやり方なので、まだ誰も投稿してないしいいんじゃないかと思います。
hisasinana

2021/05/05 12:39

jinojiさん、エラー、消えましたー。分かりやすく有難うございますー。
guest

0

Excel VBA入門 その71:実行時エラー 1004 マクロが無効の対処方法
コードを見るに単純なブック指定のミスだと思うので、こちらの対処法で解決すると思います。

投稿2021/04/30 23:40

Usirow

総合スコア364

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

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

hisasinana

2021/05/01 01:49

ありがとうございますー。自分もこのサイト見てしたんですが、やはり同じエラーで困ってますー。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問