• ベストアンサー
  • 暇なときにでも

Application.ExecuteExcel4Macroなに?

  • 質問No.1120469
  • 閲覧数6976
  • ありがとう数5
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 80% (16/20)

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)")
等の使い方もあるようですが、どなたかわかりやすく教えて頂けませんか?

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

  • 回答No.5
  • ベストアンサー

ベストアンサー率 45% (1388/3066)

> この「’」「[ ]」とかでややこしくなって、変数を使った場合がミスってばかりいました。
> この使い方の意味とかはどういう事なのでしょうか?

普通に別ブックにリンクを貼ってリンク元ブックを閉じるとセルに下記のような式が残ります。
='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

お礼率 80% (16/20)

初心者向け(私のような)のとても丁寧なご説明ありがとうございました。過去の質問でもお世話になりました。またの機会がありましたらよろしくお願い致します。
投稿日時:2004/12/12 21:50
お礼コメント
ann1

お礼率 80% (16/20)

丁寧な解説ありがとうございます。皆様のおかげでなんとかできそうな感じです。
ありがとうございました!!
投稿日時:2004/12/11 00:57

その他の回答 (全5件)

  • 回答No.6

ベストアンサー率 26% (51/192)

#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

お礼率 80% (16/20)

ご回答ありがとうございます。
ユーザーフォームについても大変興味をもっていますので、ぜひ触って勉強してみます。
コードサンプルをいただけるととても励みになります。
ありがとうございました!
投稿日時:2004/12/12 21:29
  • 回答No.4

ベストアンサー率 26% (51/192)

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

お礼率 80% (16/20)

ご回答ありがとうございます。
参考URLもありがとうございました。
私には難しいレベルでしたが、なんとかがんばってみます。
>リストボックスにAddして選択式ですれば
と言うのがよく分かりませんでした。

またここでは、Application.ExecuteExcel4Macro
の構文の仕方について知りたいと思っています。
みなさんどのように使ってらっしゃるのでしょうか?
投稿日時:2004/12/10 22:07
  • 回答No.3

ベストアンサー率 28% (4495/16014)

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

お礼率 80% (16/20)

過去の質問等でよくお名前を拝見しています。
このたびはご回答いただけてあんまり辛口でないので安心しました。笑
またの機会がありましたらよろしくお願い致します。
投稿日時:2004/12/12 21:45
お礼コメント
ann1

お礼率 80% (16/20)

丁寧なご回答ありがとうございます。
参考URLもありがとうございました。
勉強させて頂きます。
投稿日時:2004/12/10 21:51
  • 回答No.2

ベストアンサー率 45% (1388/3066)

> Book2・sheet1の部分が可変。

補足しますと、単なる文字列なので可変部分を変数にしちゃえば良いって事です。

"'C:\My Documents\[" & 変数 & "]" & 変数 & "'!R1C1"
お礼コメント
ann1

お礼率 80% (16/20)

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

ベストアンサー率 45% (1388/3066)

4.0マクロ関数じゃないけど、似たような処理の回答をさっきもしました。

http://okweb.jp/kotaeru.php3?q=1120405

4.0マクロ関数については詳しくないのでパスって事で。
補足コメント
ann1

お礼率 80% (16/20)

回答ありがとうございます。
もしかして応用できるかもしれません。
考えてみます!のでお時間いただきます。
ありがとうございました。
投稿日時:2004/12/10 01:46
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ