こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ExcelVBAマクロについて確認させてください。

ExcelVBAマクロについて確認させてください。
1)Wordファイルを開く
2)Wordファイルで、あるキーワードを検索してそのキーワードが存在するページを表示する

このようなプログラムを作成したいですが、いい案があればご教授いただきたく思います。

投稿日時 - 2018-12-27 19:19:27

QNo.9571977

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

何度質問を出しても、あまり回答はないだろう。
>いい案があればご・・
どういう案があるか、の問題ではないだろう。コードを書いてくれというレベルのことではないのか。
エクセルVBAから入りたい、という質問だが、WordVBA熟達者が少ないと思われ、ワードの解説書も少ないので、ワードのVBAで処理することで我慢したらどうか。
私も以前からWordVBAに関心はあるが、情報が得にくく、20年たっても進歩してない。
ーー
 そう言うだけではと思うので、例えばの例を挙げてみる。
WEB記事のコードを応用してみる(インストラクターのネタ帳から。後半修正)。
WordでVBEで、標準モジュールに
Sub 文字列を検索してページ番号と行番号を取得する()
Const SRCH = "吾輩"
k = 1
Dim rng As Range
Set rng = ActiveDocument.Range(0, 0)
rng.Find.Text = SRCH
Do While rng.Find.Execute = True
ActiveDocument.Tables(1).Cell(k, 1).Select
Selection.Text = rng.Information(wdActiveEndAdjustedPageNumber) & vbTab & _
rng.Information(wdFirstCharacterLineNumber)
k = k + 1
Loop
End Sub
文章例は、WEBにある、青空文庫の「吾輩は猫である」の最初の3ページほど、をワード文書に、コピーしておく。選んだ理由は何もない。
ーー
>例文
  吾輩は猫である。名前はまだ無い。例の
 どこで生れたかとんと見当(けんとう)がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあと・・以下略
ーー
その後に、この文書の最後に、挿入ー表ー2列、30行ぐらいの表を手動で作っておく。VBAでもできるが。
そしてVBAを実行。
ーー
結果
やっていることは、「吾輩」という、語句のある、ページと行を表に列挙するもの。
結果で、表の部分は
11
13
21
22
210
211
216
217
219
220
32
33
35
37
38
310
310
313
317
以下は略。
ーー
エクセルからワードへ、VBAコードで、渡り歩くのは、参照設定や、CreateObjectを使うの例が、WEBにたくさんあるが、十分理解してないと、検索の部分でうまく行かないかもしれない。
ーー
もしエクセルの表計算機能がどうしても必要なら、
ワードの表をエクセルに持ってくるのは
http://www.atmarkit.co.jp/ait/articles/1603/02/news041.html
などに記事がある。

投稿日時 - 2018-12-28 22:00:15

ANo.1

参考に
Sub Test()
  Dim objWord As Word.Application 'Microsoft Word 1*.0 Object Library 参照設定
  Dim wdDoc As Word.Document
  Set objWord = CreateObject("Word.Application")
  objWord.Visible = True
  objWord.Activate
  Set wdDoc = objWord.Documents.Open("F:\文書1.docx")
  With objWord.Selection.Find
    .Text = "山田" 'キーワード
    .Execute
  End With
  Set objWord = Nothing
End Sub

投稿日時 - 2018-12-27 22:49:48

あなたにオススメの質問