[[20250624131236]] 『Application.Runの呼び出し方法について』(たぬちゃ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『Application.Runの呼び出し方法について』(たぬちゃ)

エクセルVBAについてですが

[Book1:Sheet1]
folder = ThisWorkbook.Path & "\"
filename = "test.xlsm"
data = "あいう"

Set wb = Workbooks.Open(folder & filename)
Call Application.Run(filename & "!Sheet1.SetData", data)

[Book2:Sheet1]
Sub SetData(Optional ByVal data As String = Empty)
 msgbox data
End Sub
実行すると「あいう」が表示されます。

ところが以下のようにファイル名にスペースが入ると
filename = "test 集計.xlsm"
「このブックでマクロが使用できない・・」
になります。

調べてみると""""でくくるとあったので
filename = """"test 集計.xlsm""""
としてみると
「申し訳ございません。がみつかりません。名前が変更されたか、移動や・・・」
になります。
どのようにすればいいのでしょうか?

< 使用 Excel:Excel2016、使用 OS:Windows11 >


 >""""でくくる
 もともとの
 "ファイル名"
 のファイル名部分を""  ""でくくり
 """ファイル名"""
 じゃないの?
(ノーム) 2025/06/24(火) 13:56:23


 Option Explicit
Sub Example()
    Dim wb, folder$, Filename$, Filename2$, data$
    folder = ThisWorkbook.Path & "\"
    Filename = "test 集計.xlsm"
    data = "あいう"
    Set wb = Workbooks.Open(folder & Filename)
    Filename2 = "'test 集計.xlsm'"
    Call Application.Run(Filename2 & "!Sheet1.SetData", data)
End Sub

m(__)m
(隠居Z) 2025/06/24(火) 14:52:50


ノームさんへ

filename = """"test 集計.xlsm""""
ではなくて
filename = """ & "test 集計.xlsm" & """
ということですか?

これだと
「申し訳ございません。がみつかりません。名前が変更されたか、移動や・・・」
になります。

Call Application.Run("""test 集計.xlsm""" & "!Sheet1.SetData", data)
これも
「申し訳ございません。がみつかりません。名前が変更されたか、移動や・・・」
になります。

Call Application.Run("""test 集計.xlsm""!SheetMain.SetArgumentData", data)
これもおなじく
「申し訳ございません。がみつかりません。名前が変更されたか、移動や・・・」
になります。

Call Application.Run("""test 集計""!SheetMain.SetArgumentData", data)
これもおなじく
「申し訳ございません。がみつかりません。名前が変更されたか、移動や・・・」
になります。

(たぬちゃ) 2025/06/24(火) 15:00:59


 すみません。
 元の質問をきちんと見ていませんでした。
 シート名もあったんですね。
 Call Application.Run("""test 集計.xlsm!Sheet1.SetData""", data)
 ではどうでしょうか?
(ノーム) 2025/06/24(火) 15:07:17

本当にそのファイル同じフォルダに有るのですか。。。^^;
m(__)m
(隠居Z) 2025/06/24(火) 15:19:33

 隠居Zさんのコードで動作しますね。

 以前こんな投稿をしました。参考になれば幸いです。

 【メモ】Application.Runの使用について
 1.ブック名に半角スペースが含まれている場合は、ブックのパスを ' と 'で囲む必要がある。
 2.相手ブックが開いていない場合も自動で開いて実行する
   (むろんカレントフォルダ内に相手ブックが保存されていることが前提。
     そうでなければ、フルパス指定、かつ'と'でパスを囲む必要がある)
 3.標準モジュールにあるプロシージャはModule名を省略できるが、  
   同名のプロシージャが複数ある場合もありうるので、Module名を指定するのがよい。
 4.SheetモジュールやThisWorkbookモジュールの場合はそれを省略できない。    
 5.プロシージャが private属性でも問題ない。
 6.引数を渡すことができる。
   例:  Application.Run "相手ブック.xlsm!Module1.ボタン1_Click",引数1,・・・

(xyz) 2025/06/24(火) 15:45:41


2.ほんとうだぁ〜
。。。勝手に開くなら勝手にしめてほしいですよね(*^^*)v
でも、私みたいで[なんでもやりっぱなし。。。(#^^#)]( ̄▽ ̄;)
勉強に成りました。ありがとうございますぅ。m(__)m
(隠居Z) 2025/06/24(火) 19:21:15

 Application.Run

 フルパスで指定するなら、ブックが開いているかどうかを確認した方が
 すでに開いている場合2重に開いてしまうといった認識を持っているのだが・・・・
 この辺改良されたのかな??

(2重) 2025/06/24(火) 19:36:45


私へのアドバイスでしたら、肝に銘じます。ご教授感謝致します。
たぬちゃ さん お邪魔してすみません。一緒に学ばせて戴いております。<<_ _ >>
(隠居Z) 2025/06/24(火) 20:12:25

 いつの頃か正確に覚えていませんが、既に同名のブックがあって、重ねて開く動作命令を実行した場合、
 エラーも出ませんし、警告も出ません。二重に開くこともありません。

(xyz) 2025/06/24(火) 22:56:33


おおお。。。そういわれると。その通りですね (*^^*)
何時も、有難う御座います。
あれ〜どうなっているんだろう。。。とか思いつつも
確信がもてないでおりました。
m(_ _)m
(隠居Z) 2025/06/25(水) 10:42:47

AI 様の御返事ですと
当該ファイルに変更が加えられた後でもういちど当該ファイルを開くと
メッセージが出るとかでないとか。。。実験していないのでまたしてみます

こちらのご質問の内容からはすこぉしはなれるようなのでこの件に関しては
私はここまでとさせて戴きます。
又何かわかりましたら、別途機会が御座いましたら
成果発表などさせて頂きたいと思います。m(__)m
(隠居Z) 2025/06/25(水) 10:52:59


隠居Zさんすみません。
隠居Zさんの後"'"で試してうまくいきました。

皆さんも本当にごめんなさい。
コメント返信したつもりでしたが
おそらくプレビューしただけで投稿したつもりになっていました。
どうもすみませんでした。

(たぬちゃ) 2025/06/26(木) 08:18:04


XYZさん

>以前こんな投稿をしました。参考になれば幸いです。

ありがとうございます。
とても役に立ちます。
(たぬちゃ) 2025/06/26(木) 08:21:54


 参考になったのなら幸いでした。

 >当該ファイルに変更が加えられた後でもういちど当該ファイルを開くと
 >メッセージが出るとかでないとか。。。(隠居Zさん)
 もちろん、修正(セルに追加入力)したケースでも、同様に新たに開くことはないことを確認したうえで
 コメントしております。

(xyz) 2025/06/26(木) 14:03:30


xyz さん 了解いたしました。すみませ〜ん m(__)m
ありがとうございました。

たぬちゃさん よかったですね。。。<< _ _ >> (*^ ^*)/////
(隠居Z) 2025/06/26(木) 14:14:41


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.