• 締切済み

エクセルで、複数のファイルの特定のセルの内容を、ファイルを開かず検索したい

エクセルのマクロについての質問です。 見積書の一覧表のC列に記入されている見積書番号をダブルクリックすると、 フォルダに入っているファイルの中から、N1セルに同じ見積書番号が入っている ファイルを探し出して開く、というマクロを作成したいと思っています。 ダブルクリックするとアクションを起こすという部分と、 フォルダ内のエクセルファイルのアドレスを取得する部分はできたのですが、 ファイルを開かずに特定のセルを検索する方法がわかりません。 探す範囲のフォルダにはサブフォルダがいくつかあります。 また、見積書のブックのシート数は決まっておらず、 ブック名もシート名もばらばらで規則性はありません。 使用しているのはWINDOWS98SE,EXCEL97です。 ご存知の方、よろしくお願いします。

みんなの回答

  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.5

>このマクロを写して実行してみたのですが、 >Pos = InStrRev(FileName, "\") >という行でエラーが起きてしまって、 Pos=InStrRev(FileName,"\")の前の行に Msgbox FileName を追加し、実行してみてください。 FileNameに入っている文字列を表示させるのですが、 どのように表示されますか? フォルダの区切り記号はふつう「\」が使われているのですが 「\」ではないものになっていますか? もし、そうならその区切り記号に Pos=InStrRev(FileName,"\") の\を変えなければならないのですが、、、 -------------- 確かに お礼の中で引用されているURLにおいても、 ExcelのGetOpenFilename メソッドのヘルプをにおいても 「開かない」と書かれていますね(笑) でも、メモリにのせずに情報を得ることは無理だと思いますので、 Excelのウィンドウの形で「開かない」と理解すればよいと思います。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

>ファイルを開かずに特定のセルを検索する方法がわかりません コンピュターの原則論からして、不可能のはずです。 エクセルは(1)データや書式・関数式の「形式を備えたファイル」の(内容)保存部分と(2)それを読み、表の形式に画面に見せる機能(ビュワー)の部分があると思います。使う側から言うと(2)が重要で(エクセルはビュワーであるという説も見たことがあります)すが、データ内容を調べるだけなら、(1)のエクセル形式ファイルを読むプログラム作成の技量があれば、ビュワー機能を使わず(経由せず)に内容を調べることが出来ると思います。しかしエクセルでなくても、どんなファイルでも、ディスクを読んでメモリ上にそのファイルの求めるデータ項目セル部分を読んでこないと、ここにある、内容はこれこれと判らないはずです。だから500ものファイルがあれば、ディスクファイルを総なめに読む時間が掛かります。 「出来る」と読める表現があるとすれば、正式なエクセルビュワーのお世話(即ちエクセルを開かずに)にならずに、別作業単位でエクセル形式ファイルを読み調べる特別プログラムを走らすと言うことではないでしょうか。これがプロには出来るのは、エクセル形式のファイルを読みこめる、アプリソフトがあることで判ります(例えばライバルのLOTUS123)。しかし一般のプログラマでは、内容の公開示が無く、情報を入手し難く、ファイル形式も技巧的であろうし、まず無理ではないでしょうか。 この点を押さえて議論したり表現することが、最近の方には曖昧になっている気がしてなりません。

  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.3

毎回毎回、検索するのに500のファイルを開いていては時間がかかりますが、 マクロでインデックスファイル(ある見積もり番号がどのファイルのどのシートにあるかをまとめたもの)を作ってはいかがでしょうか? その目録ファイルで検索するようにすれば、速く検索できます。 ただ、ファイル数の増減があると思いますので、定期的に夜中にでも マクロを実行し、インデックスを更新するという運用になると 思いますが。

回答No.2

基本的には無理だと思います。 ただ、どーしても!という事であれば Application.ScreenUpdatingで画面をロックさせて(速度を上げる為) マクロで一個ずつ開いて検索くらいしか思いつきません。 基本的には見積番号やファイル名、フォルダ等に統一性を持たせる事で 解決するしかないのでは? 以前10数人程度の企業に勤めていた時に、私も同じような マクロを作りたくて悩んだ事がありますが、最終的には accessを使ってデータベース化しました。 多少時間はかかりましたが、意外と良い物が出来て社内でも好評でした。

noname#3705
質問者

お礼

ご回答ありがとうございます。 無理そうですか…。 このページでファイルを開かずに検索できるような風に書かれていましたので…。 (エラーが出てしまって、私は全く直しようがなかったので質問しました) http://www2.tokai.or.jp/mother/newhtm2/exvba/ev06/ev037.htm ファイルは500くらいあるので、開いていたらものすごく 時間がかかりますよね…? 折角アクセスでのデータベース化というアドバイスをいただいたのですが、 基本のフォーマットは一応決めているのですが、 客先によって少し変更する場合があり、また他の文書と一緒に まとめて保存しておきたいということもあって、 アクセスでは逆に不便なのだそうです。 またわからないことがあれば、よろしくお願いいたします。

  • miya_777
  • ベストアンサー率31% (44/140)
回答No.1

結論から言いますと、ブックを開かずに特定セルの値を検索することはできません。 (独自のソフトでExcelファイルを解析できるものがあれば別ですが・・。) ですので、基本的には一度ブックはオープンする必要があります。 逆にいえば、全てのブックを一度開いて、一致しないブックを閉じるといった動作をしなければなりません。

noname#3705
質問者

お礼

早速のご回答、ありがとうございます。 検索対象のファイルが500件を超えるので、 できれば開かずに検索したいと思ったのですが…。 それに、下記のページでファイルを開かずに検索できると あったので、方法があるのだと思っていました。 http://www2.tokai.or.jp/mother/newhtm2/exvba/ev06/ev037.htm このマクロを写して実行してみたのですが、 Pos = InStrRev(FileName, "\") という行でエラーが起きてしまって、 マクロ初心者の私ではどうにもできませんでしたので ここで質問させていただきました…。 またわからないことがありましたらよろしくお願いいたします。

関連するQ&A