• 締切済み

[ExcelVBA] 別ウィンドウのエクセルを参照する方法

同ウィンドウ(一つの親ウィンドウ)にBook1とBook2を開いてある状態では Book1のVBAで range("A2")=workbooks("Book2.xls").sheets(1).range("A2") というマクロを動かせば、 Book1のA2に「100」というデータが出力されます。 しかし、 別ウィンドウ(添付の画像の状態)の場合、 上のようなコードでは 「実行時エラー9 インデックスが有効範囲にありません。」となります。 別々の親ウィンドウでそれぞれのデータを開いているので、 上記と同じコードでは、Book2の場所が把握できていないので 当然エラーになります。 このように、別ウィンドウでBook1、Book2をそれぞれ開いてある状態で、 一方を参照するにはどうやったらいいのでしょうか? 添付の画像は、別ウィンドウで、Book1のボタンを押すと、 Book2を参照して、「100」というデータを取得できたという、 やりたいことのイメージです。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 それは、初歩的なミスではありませんか? その画像を見る限りは、保存していないブックのようですから、拡張子を入れたブック名を書いたら、インデックスが有効ではないというエラーが発生します。 ×Book2.xls -> Book2 Range("A2") = Workbooks("Book2").Sheets(1).Range("A1").Value 保存したブックなら、拡張子が入りますから、ブック名は有効になります。Window が違っていても、特に、取れないということはありませんね。

emson100
質問者

お礼

なんとか解決しました。 指定のウィンドウをオブジェクトで取得して オブジェクト.sheets(~ と指定したら、なんとかなりました。 この度は誠にありがとうございました。

emson100
質問者

補足

アドバイスありがとうございます。 画像を作る前に、保存したデータ(ちゃんと拡張子がxlsになっている)で はじめに試したのですが、同じようにエラーになってしまいます。 改めて、試しましたが同じエラーでした。 Workbooks(" ")の中身ですが、もしかしてフルパスではと思い 試しましたが、同じエラーでした。 現在開いている親ウィンドウを対象にしているので、 フルパスは関係ないと思いました。 もしや、親ウィンドウ名の「Microsoft Excel - 」が抜けているから と思って、Workbooks("Microsoft Excel - Book2.xls") で試しましたが、 同じエラーでした。 Workbooks("親ウィンドウ名.xls")~ っていう形で、基本的にできるのでしょうか?

  • rosche
  • ベストアンサー率20% (1/5)
回答No.1

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

emson100
質問者

補足

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

関連するQ&A

専門家に質問してみよう