• ベストアンサー

エクセルVBAで、閉じたブックを参照したい

Excel97を使用しています。 過去のQ&Aを拝見しまして、 Application.ExecuteExcel4Macro を使うと閉じたままのブックを参照できることが判ったのですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=373903 同じ要領で閉じたブック内を検索して、見つかったセルからOffset(0,-4)のセルの内容を取得するには、どのように記述したらよろしいでしょうか? Sub コード取得()  氏名 = "●● ●●"  MsgBox Worksheets("s主項目").Range(Cells(1, 5), Cells(Range("A65536").End(xlUp).Row, 5)).Find(氏名, , , xlWhole).Offset(0, -4).Value End Sub このように書いて「s主項目」シート上で実行すると、氏名に対応するコードNo.が出てきますが、これを他ブック上で氏名を入力し、「s主項目」のブックを閉じたままコードNo.を取得したいのです。 ご存知の方、どうぞよろしくお願いいたします。

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

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

これをヒントにどうぞ。 Sub test1() For i = 1 To 65535 q = " 'C:\My Documents\[Book3.xls]Sheet1'!R" & i & "C1" Hit = InputBox("") F = Application.ExecuteExcel4Macro(q) If F = Hit Then ・ naiyou= 'ここに取得したい値のあるオフセット参照を記入 ・ Msgbox naiyou Exit For End If Next End Sub

takahiro_
質問者

お礼

ご回答ありがとうございます。 For~Nextを使うのですね…。 少し時間がかかりそうですががんばってみます。 どうもありがとうございました。 また判らないことがありましたらよろしくお願いします。

その他の回答 (2)

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

外部データ取り込みでクエリーを使い参照でできます。 多少マクロは面倒くさいですが・・・

takahiro_
質問者

お礼

ご回答ありがとうございます。 ヘルプを見ましたところ、クエリーは標準セットアップでは使用できないと書かれていました。 使用しているパソコンには、カスタムインストールができませんので、他に何か方法がありましたら教えていただけませんでしょうか? 素人考えなのですが、 MsgBoxでの式を「コード式」として、 コード = Application.ExecuteExcel4Macro(コード式) という風にいかないかなぁ…と思っていたのですが…。 よろしくお願いします。

回答No.1

閉じたままってのは解りませんが、一度、別ブックをオープンし、コードNo.を取得後、オープンしたブックを閉じるように作ってみてはどうでしょうか?

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 このコードは後々、ユーザー定義関数の一部として使用する予定で、1シートには200ほど関数を使用します。すぐに計算結果を反映させようとしたら、ちょっと処理に時間がかかってしまいそうですので、できればブックを開かないまま処理できたら…と思っているのですが…。