プロが教えるわが家の防犯対策術!

同ウィンドウ(一つの親ウィンドウ)にBook1とBook2を開いてある状態では
Book1のVBAで
range("A2")=workbooks("Book2.xls").sheets(1).range("A2")
というマクロを動かせば、
Book1のA2に「100」というデータが出力されます。

しかし、
別ウィンドウ(添付の画像の状態)の場合、
上のようなコードでは
「実行時エラー9 インデックスが有効範囲にありません。」となります。

別々の親ウィンドウでそれぞれのデータを開いているので、
上記と同じコードでは、Book2の場所が把握できていないので
当然エラーになります。


このように、別ウィンドウでBook1、Book2をそれぞれ開いてある状態で、
一方を参照するにはどうやったらいいのでしょうか?

添付の画像は、別ウィンドウで、Book1のボタンを押すと、
Book2を参照して、「100」というデータを取得できたという、
やりたいことのイメージです。

「[ExcelVBA] 別ウィンドウのエク」の質問画像

A 回答 (2件)

こんばんは。



それは、初歩的なミスではありませんか?
その画像を見る限りは、保存していないブックのようですから、拡張子を入れたブック名を書いたら、インデックスが有効ではないというエラーが発生します。

×Book2.xls -> Book2

Range("A2") = Workbooks("Book2").Sheets(1).Range("A1").Value

保存したブックなら、拡張子が入りますから、ブック名は有効になります。Window が違っていても、特に、取れないということはありませんね。

この回答への補足

アドバイスありがとうございます。

画像を作る前に、保存したデータ(ちゃんと拡張子がxlsになっている)で
はじめに試したのですが、同じようにエラーになってしまいます。

改めて、試しましたが同じエラーでした。


Workbooks(" ")の中身ですが、もしかしてフルパスではと思い
試しましたが、同じエラーでした。

現在開いている親ウィンドウを対象にしているので、
フルパスは関係ないと思いました。

もしや、親ウィンドウ名の「Microsoft Excel - 」が抜けているから
と思って、Workbooks("Microsoft Excel - Book2.xls") で試しましたが、
同じエラーでした。

Workbooks("親ウィンドウ名.xls")~
っていう形で、基本的にできるのでしょうか?

補足日時:2009/06/01 02:08
    • good
    • 0
この回答へのお礼

なんとか解決しました。

指定のウィンドウをオブジェクトで取得して
オブジェクト.sheets(~
と指定したら、なんとかなりました。

この度は誠にありがとうございました。

お礼日時:2009/06/01 02:39

別のエクセルをVBA内で起動すれば、オブジェクトを捕まえられるのでできそうですがそれでは駄目でしょうか?

この回答への補足

アドバイスありがとうございます。
完全に別ウィンドウで別々に作動してほしいです。

補足日時:2009/06/01 01:52
    • good
    • 0

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