質問: excelvbaマクロについて確認させてください。 excelvbaマクロについて確認させてください。 1)wordファイルを開く 2)wordファイルで、あるキーワードを検索してそのキーワードが存在するページを表示する このようなプログラムを作成したいですが、いい案があればご教授いただきたく思います。
回答: 何度質問を出しても、あまり回答はないだろう。 >いい案があればご・・ どういう案があるか、の問題ではないだろう。コードを書いてくれというレベルのことではないのか。 エクセル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を実行。 ーー 結果 やっていることは、「吾輩」という、語句のある、ページと行を表に列挙するもの。 結果で、表の部分は 1 1 1 3 2 1 2 2 2 10 2 11 2 16 2 17 2 19 2 20 3 2 3 3 3 5 3 7 3 8 3 10 3 10 3 13 3 17 以下は略。 ーー エクセルからワードへ、vbaコードで、渡り歩くのは、参照設定や、createobjectを使うの例が、webにたくさんあるが、十分理解してないと、検索の部分でうまく行かないかもしれない。 ーー もしエクセルの表計算機能がどうしても必要なら、 ワードの表をエクセルに持ってくるのは http://www.atmarkit.co.jp/ait/articles/1603/02/news041.html などに記事がある。