- ベストアンサー
エクセル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.を取得したいのです。 ご存知の方、どうぞよろしくお願いいたします。
- みんなの回答 (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
その他の回答 (2)
- WWolf
- ベストアンサー率26% (51/192)
外部データ取り込みでクエリーを使い参照でできます。 多少マクロは面倒くさいですが・・・
お礼
ご回答ありがとうございます。 ヘルプを見ましたところ、クエリーは標準セットアップでは使用できないと書かれていました。 使用しているパソコンには、カスタムインストールができませんので、他に何か方法がありましたら教えていただけませんでしょうか? 素人考えなのですが、 MsgBoxでの式を「コード式」として、 コード = Application.ExecuteExcel4Macro(コード式) という風にいかないかなぁ…と思っていたのですが…。 よろしくお願いします。
- kaekaekaede
- ベストアンサー率34% (11/32)
閉じたままってのは解りませんが、一度、別ブックをオープンし、コードNo.を取得後、オープンしたブックを閉じるように作ってみてはどうでしょうか?
お礼
ご回答どうもありがとうございます。 このコードは後々、ユーザー定義関数の一部として使用する予定で、1シートには200ほど関数を使用します。すぐに計算結果を反映させようとしたら、ちょっと処理に時間がかかってしまいそうですので、できればブックを開かないまま処理できたら…と思っているのですが…。
お礼
ご回答ありがとうございます。 For~Nextを使うのですね…。 少し時間がかかりそうですががんばってみます。 どうもありがとうございました。 また判らないことがありましたらよろしくお願いします。