10000件のワードファイルからキーワード検索というのは、とても負荷が大きいいですねぇ~
エクセルのVBAでしたら、一個一個見に行っちゃうので、とてもロスが多いです。
.netやJavaでも変わりは無いですが・・・
とりあえずの方法としては、10,000行あるドキュメントをループして、1ファイルずつ検索して結果を保存し、別のシートかなにかにデータを出力していくっていう感じですかな?
'たいがいボタンから動作するかな~?って予想で・・・
Private Sub button1_Click()
Dim I As Long
'For~Nextで最初の行から最終行までを総なめしちゃいます。
For I = 1 To ActiveSheet.Range("D1").End(xlDown).Row
'下の独自関数を呼び出しちゃいます。"aa"は、検索するキーワードを拾ってください。
'ドキュメント名はアクティブシートから拾ってます。
If SearchDocument("aa", ActiveSheet.Range("D" & CStr(I)).Value) Then
Sheets(2).Range("A" & CStr(I)).Value = ActiveSheet.Range("A" & CStr(I)).Value
Sheets(2).Range("B" & CStr(I)).Value = ActiveSheet.Range("B" & CStr(I)).Value
Sheets(2).Range("C" & CStr(I)).Value = ActiveSheet.Range("C" & CStr(I)).Value
Sheets(2).Range("D" & CStr(I)).Value = ActiveSheet.Range("D" & CStr(I)).Value
End If
Next
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Wordドキュメントを検索する独自関数
'
'SearchDocument
'返り値:Boolean
'KeyWords:検索したいキーワード(文字列)
'DocumentName:検索するWordファイルのフルパス(文字列)
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function SearchDocument(KeyWords As String, DocumentName As String) As Boolean
SearchDocument = False
On Error Resume Next
'オブジェクト変数の宣言
Dim objWord
Dim objDoc
Dim objSelection
'ワードアプリケーションを格納
Set objWord = CreateObject("Word.Application")
'検索するドキュメントを開く
Set objDoc = objWord.Documents.Open(DocumentName)
Set objSelection = objWord.Selection
'検索設定
'検索するキーワードを設定
objSelection.Find.Text = KeyWords
'前方から検索する
objSelection.Find.Forward = True
'キーワードを単語単位で完全一致させてます。
'文字であいまい検索の場合は省いてください。
objSelection.Find.MatchWholeWord = True
'検索結果があればTrueが返ります。
If objSelection.Find.Execute Then
SearchDocument = True
End If
Set objWord = Nothing
End Function
こんな感じです。
アレンジは必要ですが、試してみてください。
補足
回答して頂いて、本当にありがとうございます! 早速マクロに登録してみましたが。。。 やっぱり10,000件を検索するのは相当時間がかかるのか、パソコンが固まってしまいました。 ところで、回答して頂いたものを実行すると、キーワードをどこで入力するのでしょうか? ボタンを押下すると、キーワード検索のダイアログボックスが出てくる・・・とか? そのあとに、sheet2に検索結果を含む行の一覧表が表示されているはず・・・なのでしょうか? 本当に何もわからなくてすみません。。。 もう一度、回答お待ちしております。