• ベストアンサー

Application.ExecuteExcel4Macroなに?

No.373903を拝見しまして、閉じたままのブックを参照できるらしいので使いたいのですが、ブックが複数ある場合、[ ]内はどのように書けば良いのでしょう? 例) Cells(1, 1) = Application.ExecuteExcel4Macro _ ("'C:\My Documents\[Book2.xls]Sheet1'!R1C1") Book2・sheet1の部分が可変。 また、 Application.ExecuteExcel4Macro("get.document(50)") や Application.ExecuteExcel4Macro ("Halt(True)") 等の使い方もあるようですが、どなたかわかりやすく教えて頂けませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.5

> この「’」「[ ]」とかでややこしくなって、変数を使った場合がミスってばかりいました。 > この使い方の意味とかはどういう事なのでしょうか? 普通に別ブックにリンクを貼ってリンク元ブックを閉じるとセルに下記のような式が残ります。 ='C:\My Documents\[Book1.xls]Sheet1'!$A$1 これを変数を交えた文字列にしてあげるだけです。 文字列として直に書く場合は""で括ります。 例えば、↓ここまではいつも同じなので""で括ります。 "='C:\My Documents\[" 変数などと繋ぐ場合は & で繋ぎます。 "='C:\My Documents\[" & 変数1 さらにいつも同じ部分を""で括って & で結合 "='C:\My Documents\[" & 変数1 & "]" またまた変数にしたい部分を & で結合 "='C:\My Documents\[" & 変数1 & "]" & 変数2 最後にいつも同じ部分を""で括って & で結合して完成 "='C:\My Documents\[" & 変数1 & "]" & 変数2 & "'!$A$1" これで変数1に Book1.xls を代入し、変数2に Sheet1 を代入してやれば元の式が出来ます。 Sub aaa()  変数1 = "Book1.xls"  変数2 = "Sheet1"  MsgBox "元構文:='C:\My Documents\[Book1.xls]Sheet1'!$A$1" _      & vbCrLf & _      "変数化:='C:\My Documents\[" & 変数1 & "]" & 変数2 & "'!$A$1" End Sub > Application.ExecuteExcel4Macro > の構文については他にはどのように使ってらっしゃるのでしょうか? 使ってません。 下位互換用に残してあるのでは無いかと思います。 使わなくても同様の事が実現出来るハズです。

ann1
質問者

お礼

丁寧な解説ありがとうございます。皆様のおかげでなんとかできそうな感じです。 ありがとうございました!!

ann1
質問者

補足

初心者向け(私のような)のとても丁寧なご説明ありがとうございました。過去の質問でもお世話になりました。またの機会がありましたらよろしくお願い致します。

その他の回答 (5)

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.6

#4のWWolfです ユーザーフォームを作成しリストボックスを置き下記のソースを実行してみてください。 Sub Test() Dim fs, f, f1, fc, fn, s, sy, DrPh, ITI, Da DrPh = "c:\a" ITI = "R1C1" Load UserForm1 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(DrPh) Set fc = f.Files For Each f1 In fc s = f1.Name sy = Right(s, 3) If sy = "xls" Then UserForm1.ListBox1.AddItem s 'q = " '" & DrPh & "\[" & s & "]sheet1'!" & ITI 'Da = Application.ExecuteExcel4Macro(q) 'MsgBox Da End If Next UserForm1.Show End Sub これができれば、次にフォームにコマンドボタン(OKボタン)を作成しリストボックスで選択されたファイルを指定して・・・というものをつくります。 頑張ってください

ann1
質問者

お礼

ご回答ありがとうございます。 ユーザーフォームについても大変興味をもっていますので、ぜひ触って勉強してみます。 コードサンプルをいただけるととても励みになります。 ありがとうございました!

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.4

http://okweb.jp/kotaeru.php3?q=1120405 での回答#4 http://okweb.jp/kotaeru.php3?q=1115112 での回答#3 のWWolfです。 上記前者の所にファイル取得してあるコードがあるので、それをリストボックスにAddして選択式ですれば可能ですよ。

ann1
質問者

お礼

ご回答ありがとうございます。 参考URLもありがとうございました。 私には難しいレベルでしたが、なんとかがんばってみます。 >リストボックスにAddして選択式ですれば と言うのがよく分かりませんでした。 またここでは、Application.ExecuteExcel4Macro の構文の仕方について知りたいと思っています。 みなさんどのように使ってらっしゃるのでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

1ブックに付き1ステートメントでは無いでしょうか。 だから複数個のブックに対しては、 (1)ブック名部分を変えたステートメントを次々並べるか (2)ブック名の部分を変数化して、変数の値を変えて繰り返すか しかなく、カンマで区切って並べたり、ARRAY(A,B,C)のような表現はできないと思います。 >閉じたままのブックを参照したいと言うことで、ExecuteExcel4Macroしかないのかどうか判りませんが 一世代前の「マクロ」時代の機能を使おうとするのは どうかなと思います。 しかし「ファイルを閉じたまま、データを取り出すこと」はこれ以外ないのか、載ってますね http://www.officetanaka.net/excel/vba/tips/tips28.htm http://homepage1.nifty.com/gak/MSTips/getfromclosedfile.html WEB照会で「ExecuteExcel4Macro」で照会すると80件あまり出ますが、これぐらいが情報入手の限界で、それ以外の当時マクロを使った人も、5.0位後のVBAに切り替えたのではないでしょうか。当時ロータス123が優勢でユーザーも少なく、記憶も薄れているでしょう。エクセル4.0のマクロ解説書・マニュアルは古本屋の世界でしょうが、ここ10年もの間古本屋でも1度も見たこともありません。

ann1
質問者

お礼

丁寧なご回答ありがとうございます。 参考URLもありがとうございました。 勉強させて頂きます。

ann1
質問者

補足

過去の質問等でよくお名前を拝見しています。 このたびはご回答いただけてあんまり辛口でないので安心しました。笑 またの機会がありましたらよろしくお願い致します。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

> Book2・sheet1の部分が可変。 補足しますと、単なる文字列なので可変部分を変数にしちゃえば良いって事です。 "'C:\My Documents\[" & 変数 & "]" & 変数 & "'!R1C1"

ann1
質問者

お礼

ご回答ありがとうございます。 参考になります。 この「’」「[ ]」とかでややこしくなって、変数を使った場合がミスってばかりいました。この使い方の意味とかはどういう事なのでしょうか? Application.ExecuteExcel4Macro の構文については他にはどのように使ってらっしゃるのでしょうか?

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

4.0マクロ関数じゃないけど、似たような処理の回答をさっきもしました。 http://okweb.jp/kotaeru.php3?q=1120405 4.0マクロ関数については詳しくないのでパスって事で。

ann1
質問者

補足

回答ありがとうございます。 もしかして応用できるかもしれません。 考えてみます!のでお時間いただきます。 ありがとうございました。

関連するQ&A