質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

3回答

7935閲覧

VBAでの全文検索の方法

Nitta

総合スコア96

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

1クリップ

投稿2018/09/21 00:45

編集2018/09/21 02:47

お世話になってます。
実は以前、ISOの品質関係の文書検索のシステムを
Access vbaで作成したのですが、追加である文字列をフォームから
入力したら指定したフォルダ内のファイル名が一式表示される
機能を追加してほしいと依頼があり、対応するのですが
指定したフォルダ内には、Excel文書及びWord文書が含まれており、
Access/Excel VBAで操作しているので、Wordが上手く
引っ掛かりません。いろいろ検索したのですが、
いい方法が見当たりません。
ご存知の方居られましたら、ご教示下さい。

試した事
①VBAでコマンドラインを操作して、Grepコマンドを使用して
検索できるようにはなりましたが、txtファイルが山のように
でき、諦める。
②ExcelのFind関数を使用して、1ファイルずつOpen,closeを
繰り返して検索はできるが、ファイル数が多くい場合時間が掛ってしまう。

やりたいこと
できるだけ早く検索できるようにしたい

例)
①フォームに『記録の保管』の文字入力とフォルダ『品質保証部』を指定
②品質保証部フォルダ内の文書で『記録の保管』の文字が含まれている
文書を検索
③引っかかったら、その文書名等をExcelに一覧表示

尚、文書形式はExce(.xlsx,.xls)l及びWord(.docs)の文書形式

(補足)
物凄いレベル会社で何故かVBAにこだわっています。
日本の大手大企業で化学系会社で今、
IOTなどでスマートファクトリーなどしてますが、
社員はほぼAccessはおろかExcel VBAも満足に使えません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2018/09/21 01:04

VBAで全文検索のシステムを1から作る、とかいう話でしたら、恐らく諦めた方がよろしいのではないでしょうか?
ttyp03

2018/09/21 01:12

yoorwmさん>その理由を書かないと回答にはならないと思いますよ。
Nitta

2018/09/21 01:15 編集

返信遅れまして、すいません。返信ありがとうございます。自分も諦めるが吉と考えています。 本当に異常に無理難題を押し付けてきて困っています。
guest

回答3

0

エクスプローラーにはファイルの内容まで含めて検索してくれる機能があるので、APIなどを駆使してこれを利用すれば可能かもしれません。
windows7のエクスプローラをVBAで操作-3

投稿2018/09/21 03:21

sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nitta

2018/09/21 05:58

返信ありがとうございます。 なるほど、エクスプロアラーを操作するのも アリですよね! 参考にさせて頂きます。 今後とも宜しくお願いします。
guest

0

もう解決したようですが、高速で検索したいなら一時ファイルを作れば良いのでは無いでしょうか。

例えばファイルリストと更新日時をデータベースで管理しておいて、変化したファイルが無いか調べて、変化したファイルだけ開いて内容をプレーンテキストに変換するプログラムを用意しておきます。

通常時の検索はプレーンテキストから検索すれば良いので、非常に高速化されます。

変換させるタイミングとしては
・1日のうち初めて誰かが検索を押した時
・誰かが更新ボタンを押した時
・空いてるPC(またはサーバーとか)のタスクに登録して定期的に実行
などが考えられますね。

インデックスを作れば更に高速化されると思いますが、そこまでする必要があるかはデータ量、検索頻度、開発にかけられる時間次第ですね。

投稿2018/09/21 07:39

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nitta

2018/09/25 23:19

返信遅れ申し訳ありません。返信ありがとうございます。 検索頻度は結構高めで、データ量は数万レコードという感じでしょうか? 凄い参考になりそうな意見です。高速性を上げるのは結構大変かもですが? 今後共、宜しくお願いします。
guest

0

ベストアンサー

②ExcelのFind関数を使用して、1ファイルずつOpen,closeを繰り返してExcelは検索できるが、wordができない。

参考にしたサイト
EXCEL VBAからワード文書を開き、検索結果

手元環境
Win 10
Excel 2013
Word 2013

Excel側のVBAでWord文書を扱うために、参照設定で
「Microsoft Word 15.0 Object Library」
のチェックをONにしました

参考サイトのコードで表中の文字まで拾ってくれました
図形オブジェクト中の文字まで拾いたいなら工夫次第?

以上ご参考まで

投稿2018/09/21 02:34

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nitta

2018/09/21 02:45

お世話になってます。返信ありがとうございます。 確かにできましたが、ファイル数が100ファイルぐらいあるので 時間が掛りすぎるんですが、やはり無理ですよね?
takito

2018/09/21 03:07

「無理」、というのは、何分も待たされて業務に支障が出るので「無理」という意味でしょうか? でしたら、どういった種類の文書(設計書なのか、議事録なのか、品質に関する文書なのか)から見つけたいのかを絞りこませ、対象ファイル数を少なくすれば、無理ではなくなるかも? vba検索でなければならないなら、使い方の工夫でなんとかするしかないかなと
Nitta

2018/09/21 05:57

返信ありがとうございます、。 なるほど、文書の種類で絞り込む方が効率良いですよね! 参考にさせてもらいます。今回は有難うございました。 今後とも宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問