アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (6件)

> この「’」「[ ]」とかでややこしくなって、変数を使った場合がミスってばかりいました。


> この使い方の意味とかはどういう事なのでしょうか?

普通に別ブックにリンクを貼ってリンク元ブックを閉じるとセルに下記のような式が残ります。
='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
> の構文については他にはどのように使ってらっしゃるのでしょうか?

使ってません。
下位互換用に残してあるのでは無いかと思います。
使わなくても同様の事が実現出来るハズです。

この回答への補足

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

補足日時:2004/12/12 21:50
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/11 00:57

#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ボタン)を作成しリストボックスで選択されたファイルを指定して・・・というものをつくります。
頑張ってください
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/12 21:29

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

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

またここでは、Application.ExecuteExcel4Macro
の構文の仕方について知りたいと思っています。
みなさんどのように使ってらっしゃるのでしょうか?

お礼日時:2004/12/10 22:07

1ブックに付き1ステートメントでは無いでしょうか。


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

この回答への補足

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

補足日時:2004/12/12 21:45
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/10 21:51

> Book2・sheet1の部分が可変。



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

"'C:\My Documents\[" & 変数 & "]" & 変数 & "'!R1C1"
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/10 22:12

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



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

4.0マクロ関数については詳しくないのでパスって事で。

この回答への補足

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

補足日時:2004/12/10 01:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!