Gizport
1 回答
0
Share (facebook)
255
view
全般

EXCEL VBAからワード文書を開き、検索結果をエクセルシートに記...

EXCEL VBAからワード文書を開き、検索結果をエクセルシートに記入していく方法を教えて下さい。 例えばA1からA100までのセルに検索対象語が挿入されたEXCELのSheet1があります。但し検索対象語数は事前に分かっておらず、A90まで記載されているのか、A120までなのか分からないものとします。検索語がなくなれば以後セルは空白です。空白セルにたどり着くまで、A1から順番にワード文書を検索していきます。例えばA10セルの単語がワード文書で見つかった時は、B10セルに見つかった検索語のワード文書のページ数を入力します。同じ単語が文書内に複数見つかる場合もあり得るので、一番最初に出てきたものを探すとします。文書内にA10の単語がない場合はB10はゼロが入力されます。
以上を行うVBAマクロを教えて下さい。
Yahoo!知恵袋 4733日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
◇ 追記 ◇

EXCEL VBAからワード文書を開き、
単語検索をされるという場合、
この 追記 前の記述部(下段)にある
URL先での、
ご質問者の質問欄内で提示しておられた

http://technet.microsoft.com/ja-jp/library/ee692875.aspx

での、サンプルコ-ドを 参照していただければ幸いです。

Excel側に、
このサンプルコ-ドを応用したコ-ドを作成し、
検索させた場合、ワード文書のページ数を取得する必要もありますし、
A列の複数セルを順次検索語とする、
繰り返し処理も、考える必要はあるでしょう。

参照設定を必要としないコ-ド記述で、
処理が可能となりますよう、
研究なさってください。

尚、回答に対する編集可能な期限が迫ってきましたので、
下記に、コ-ドの一例を提示しておきます。

▽ 参照設定が必要なコ-ド例...... 添付図における実行コ-ド ▽


' 参照URL http://www.simple-sys.com/blog/vbamatome/vbamatome007/

Sub 語句検索Test()
Dim wdObj As New Word.Application
Dim wdDoc As Word.Document
Dim wordFile As String
Dim i As Long, MaxRow As Long
Dim P As Long, L As Long

' Excel側 Sheet1 A列で最終行を確認
MaxRow = ThisWorkbook.Worksheets("Sheet1"). _
Range("A" & Rows.Count).End(xlUp).Row

' ※ 実際に、OpenするWord文書ファイル名をパス名付きで入れます ※
wordFile = "D:OfficeExcel DATATestTest 0015文書 Sample.doc"

' Word文書を開きます
wdObj.Visible = True
wdObj.Documents.Open wordFile

Application.ScreenUpdating = False

With wdObj

For i = 1 To MaxRow

.Selection.Find.ClearFormatting
.Selection.HomeKey Unit:=wdStory

' 検索するキーワードを設定します
.Selection.Find.Text = ThisWorkbook.Worksheets("Sheet1"). _
Range("A" & i)

' 検索する方向を指定します
.Selection.Find.Forward = True

If .Selection.Find.Execute Then
With .Selection
P = .Range.Information(wdActiveEndPageNumber)
L = .Range.Information(wdFirstCharacterLineNumber)
ThisWorkbook.Worksheets("Sheet1").Range("B" & i) = P & "ペ-ジ == " & L & "行"
End With

Else
ThisWorkbook.Worksheets("Sheet1").Range("B" & i) = 0

End If

Next

End With

ThisWorkbook.Worksheets("Sheet1").Cells.Columns.AutoFit

Application.ScreenUpdating = True

' Word文書を閉じます
wdObj.Documents.Close
wdObj.Quit

End Sub


’ ※ 部分については、ご質問者が用意されたワード文書のパス名とファイル名を記述してください。



----------------------

追記 前 記述部分

老婆心ながら、
自らコ-ドを作成したり、
ネット上でサンプルを入手し、
動作させて、

ExcelVBAから,
Wordを操作するという処理の上で、
予め、
参照設定をしておく必要がある場合もありますので、
この点も、お考えに入れておいてください。

Visual Basic Editorのメニューで、

ツール→参照設定
「Microsoft Word XX.X Object Library」

の前の □ にチェックを入れ、
OKを押すという、
具合です。

※ 上記ライブラリ-名で
XX.X としてあるのは、
使用しているExcelのバ-ジョンによって、
数値が違ってくるからです。
ちなみに、Excel 2007 では12.0、
Excel 2010 では14.0が、確認できると思います。

下記URLは過去に、当方がWord ⇒ Excel で単語検索用に
コ-ド提示し、回答した例です ↓ この場合は参照設定は必要ありませんでした
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1055867790


尚、当方Excel2007およびExcel2010にて、
動作確認したコ-ドを、
提示したいとは思いましたが、
ワード文書のファイル名およびファイルの保存場所が不明であり、
更にExcelのバ-ジョンやOS名も質問内に記載されていないため、
この段階での提示は控えますので、
ご了承ください。



▽ 当方が、 Excel側からコ-ドを実行したイメ-ジ ▽
Yahoo!知恵袋
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
58
Views
質問者が納得ベストかどうかは分かりませんが、 =LOOKUP(B2,{0,75,90,95},{"D","C","B","A"}) なんかはシンプルですかね。
4729日前view58
全般
84
Views
質問者が納得◇ 追記 ◇ EXCEL VBAからワード文書を開き、 単語検索をされるという場合、 この [追記] 前の記述部(下段)にある URL先での、 ご質問者の質問欄内で提示しておられた http://technet.microsoft.com/ja-jp/library/ee692875.aspx、 での、サンプルコ-ドを 参照していただければ幸いです。 Excel側に、 このサンプルコ-ドを応用したコ-ドを作成し、 検索させた場合、ワード文書のページ数を取得する必要もありますし、 A列の複数セルを順...
4733日前view84
全般
117
Views
質問者が納得求めたいセルを選択し、【ホーム】タブー【編集】グループー【オートSUM】▼【最大値】または【最小値】を選択すれば計算式が入ります。(下図参照ください。)計算対象を確認し、Enterします。最大値=MAX(A10:A90)最小値=MIN(A10:A90)↑この数式をコピーしてExcelに貼りつけてもOKです。■別方法関数など一切使わずに、(Excel画面一番下のタスクバーの上にあります)ステータスバーで右クリックし、【ステータスバーのユーザー設定】で「最大値」と「最小値」に✓を入れます。セル範囲A10:A90...
4818日前view117
全般
114
Views
質問者が納得ここでいう 「快適」 の基準で言えば「そんなPCではFF14は快適にはできません」という回答しか出ないでしょう。まず、GPUがHD6850ではお話になりません。FF14を 「快適に」 という基準で行くなら、最低限HD6870、6970、GTX570、580が最低ラインでどうにか・・・最高画質で遊びたいならそれぞれクロスファイア、SLI、3WaySLIなどが必須。しかもなぜ違うメーカなので?基本的に問題を抱えたくないなら同一メーカの同一GPUは基本ですが?ケースは全くゲーム向きではありません。最低でもNine...
4874日前view114
全般
121
Views
質問者が納得何か、効率の良くないコードですね。でも、ComboBox1~2 は、ちゃんとリストが設定されますよ。コンボの▼を押してみましたか? 多分他もいいかと・・・コンボボックスのリストをシートの範囲を《 固定 》して設定しているようですが、それなら RowSourceプロパティを予め設定すれば済むように思いますが・・・ そうすれば、VBAは、必要ありません。たとえば、ComboBox1を右クリックし、RowSourceプロパティにSheet1!A90:A95 と設定すればいいだけと思います。> For i =...
4878日前view121

取扱説明書・マニュアル

783view
http://www.arcam.co.uk/.../a90p90_manual.pdf
15 ページ0.79 MB
もっと見る