• ベストアンサー

文字列検索の方法を教えて下さい

あるフォルダに複数のExcelファイルがあり、住所録が入力されてあります。 Bookの中身は、名前、住所、名前、住所とセルを分けて複数列にはいってます。 そのデータに対して、名前の一部を入力して、名前-住所の組をヒットした数だけ、出力したいと思います。 例)「田中」を入力、「田中一郎、住所1」「田中花子、住所2」という感じです。 似たような質問は、あったのですが、 http://www.okweb.ne.jp/kotaeru.php3?q=19030 解決していないようで、”Namazu”と言うソフトは、Perlが必要ということでした。 なるべくなら、VBのEXEか、IEの上でVBScriptで、できればいいのですが、どのようにアプローチすればいいのか、わかりません。 一つずつファイルを開いて、セルの値を取り込んでやってみると、処理時間が長くかかりすぎて、使い物になりませんでした。 なにかいい方法は、ないでしょうか?よかったら教えて下さい。お願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

VBがないので、ExcelVBAで作ってみました。 1Bookに名前、住所の3000個のデータを持ったBookを5Book作成。   (ハードディスク内で、平均4シート、データのない空シートなども含む) 都合15000個の名前、住所。 検索用のBookで検索を実行。手順は、  1.InputBoxで検索する名前の一部を入力  2.GetOpenFilenameで検索対象のBookを複数指定(事前に指定も可能)  3.指定された最初のBookを開く  4.Find、FindNextで検索して合致したら名前、住所を検索用シートに出力  5.次のBookを処理して、最後のBookまで繰り返し 結果は、まんべんなく散りばめたデータで、5Bookで0.?~3秒くらいです。(500MHくらいのPC、Excel97) 合致したデータの数で処理時間が少し変動するみたいです。 >処理時間が長くかかりすぎて、使い物になりませんでした。 VBでもありませんし、『処理時間が長く』がどの程度か分かりませんので結果報告だけとしておきます。 また、シート構造が分からないので、『山口県の山口さん』は2つ抽出しました。構造が分かれば対応はつくでしょう。 VBでも同じような手順ではないでしょうか。ご参考に。

ykkw_2001
質問者

お礼

確かに、VBAにするとまずまずの処理時間になりました。VBのOLEの場合、どうやら、Excelをはじめて起動する(オブジェクトを取得する)ときの読み込みで時間を食ってしまうようです。 教えていただいた方法と、シェアウェアを検討してみたいと思います。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.3

締め切られていないようですので... 蛇足ですが、検索ソフトで、というのならもっと選択肢があると思いますので、お金を払う前に色々検討された方がよいですよ。Vectorにもたくさん登録されています。 たまたま、今回のVecotrニュースに載ってきたもの http://www.vector.co.jp/magazine/softnews/011128/n0111283.html とか...

参考URL:
http://www.vector.co.jp/vpack/filearea/win95/util/file/find/index.html
ykkw_2001
質問者

お礼

たくさんあるものですね。 一つずつ試してみたい気持ちはあるのですが、かなり時間がかかりそうで・・・ とりあえず、ソフトの説明を見て、該当するらしきものをの詳細説明をみました。 それでも、10個くらいあるので、試してみたいと思います。 ご回答ありがとうございました。 >締め切られていないようですので... 最終的に結果を決めたら、ご報告をかねて締め切ろうかと思ってます。また、よさそうなのがあれば、教えて下さい。(<ま~だ、頼むのか)

ykkw_2001
質問者

補足

とりあえず、なんか中途半端なVBAのままですが、逐次不都合や気に入らないところを直しながら使って行くことにしました(ていうか、なしくずしでそうなってます) 各PCにインストールする時期がバラバラで、シェアウェアは、支払いがややこしくなりそうなので、遠慮しました。 フリーのものも充分探せていないですが、よいのが見つかったら、乗り換えようと思います。 ひとまず、OkWebさんが、締め切れとおっしゃってますので・・・・ ためになりました。皆さんのご回答に感謝します。

すると、全ての回答が全文表示されます。
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

まず、Excel/Wordを含むファイルの全文検索するのなら http://homepage2.nifty.com/AnoSoft/ にシェアウェアがありました。 Googleで「Excel Word 全文検索」で引っかかったサイトです。 VBのプログラミングで解決したいというのが質問の趣旨でしょうか? DAO/ADOを使い、Excelファイルを ODBC接続できるはずです。私も詳しくないので...一応ここまで^^;)

ykkw_2001
質問者

お礼

教えていただいたシェアウェアを試用してみることにします。 >VBのプログラミングで解決したいというのが質問の趣旨でしょうか? 特にこだわりはありません。手元にあるのがそれだっただけです。 遅い原因が、Excelファイルを開く段階であることがわかりました。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A