プロが教える店舗&オフィスのセキュリティ対策術

Wordで報告書を作成していて、Word内の単語を説明するのに
報告書をみながら専門用語をExcelにまとめる作業を毎度行っているので簡略化したいです。

前回までの専門用語の説明過程をExcelにまとめた内容があるので、
---
そのExcelを使用してWord内の単語を検索

検索に該当した単語を抽出
---
を、VBAで簡単に行いたいのですが、
あまりVBAは勉強していないので検索しても見つからず困っています。

異なるアプリ同士なので難しいかもしれませんが、
良い案があればお教えください。

A 回答 (6件)

こんにちは



よくわからないので、テキトーです。
(ワードのVBAを知らないこともありますけれど…)
「エクセルのセル範囲に存在する各文字列が、ワード文書内に存在するかどうかをチェックしたい」
ということと解釈しました。

以下、ごく簡単なサンプルですので、後は適当にアレンジしてください。
・エクセルのアクティブシートのA列に文字列が並んでいるものとします
・指定のワード文書内にその文字列が存在すれば、B列に〇を表示します

※ ワード内の検索は通常の文章部分のみを対象としています。
※ ワード文書を開いて、処理後に閉じるため、若干時間がかかるかも知れません。

Sub sample_12321737()
Dim sh As Worksheet, c As Range
Dim wd, doc

Const wordPath = "C:\Users\hoge\word.docx" 'ワード文書のパス

Set sh = ActiveSheet
sh.Columns(2).ClearContents
Set wd = CreateObject("Word.Application")
wd.Visible = True
Set doc = wd.documents.Open(wordPath)

For Each c In Range(sh.Cells(1, 1), sh.Cells(Rows.Count, 1).End(xlUp))
 If c.text <> "" Then
  With doc.Content.Find
   .ClearFormatting
   .Execute FindText:=c.text, Wrap:=wdFindContinue
   If .found Then c.Offset(, 1).Value = "〇"
  End With
 End If
Next c

doc.Close False
wd.Quit
End Sub
    • good
    • 3
この回答へのお礼

解答ありがとうございます!
fujillinさんのおかげでやりたかったことの1つができました…!

これとは逆に、抽出出来なかった単語(検索に該当しなかった単語)も、条件付きで抽出したいのですが、可能であれば教えて頂けると嬉しいです。

お礼日時:2021/04/22 16:33

No.4です。



今回の質問内容については以前『テキストファイルに書かれた語句(1対1)を読み込んで置換させ蛍光ペンで塗る』と言うのを昔作った記憶があって、その保存したコードが見つからずに出遅れました。
考えてみたらあれはWordVBAで作ったものなので修正が少々手間になったかもです。(Wordは基本操作も出来ない初級者以下なので)

No.4について提示したのはフリーソフトで検索してもあるかもですが、ExcelなどVBAですと精度が怪しそうな感じで、どちらかと言えばPython,R言語,Go言語辺りの方が自身で組むよりパッケージを追加インストし利用って手段はあるのかなと。
でも基本操作から未経験であれば委託と言うのも良いのかも知れませんね。

Word自体も品詞はともかく語句で分割する手段はあるでしょうけど、どのように分割してくるかは当てになるか?と言う感じかも。

『今日の日はとても良い天気になりそうですね。』

と言う一文があったとしてWordVBAで

Sub megu()
Dim stWord

For Each stWord In ThisDocument.Words
Debug.Print stWord
Next

End Sub

を実行すると、

今日



とても
良い
天気

なりそう
です



こんな感じで品詞は不明のただの分割にはなりますね。
これを手直しってのも手間かもとは思います。
テキストボックスなどのオートシェイプ等への考慮はよくわかりません。
なんせExcelVBAと違いWordVBAは余り情報がなく、あっても英語とかで私には解読できないので。(悪戯に試してみて結果で判断する程度)
    • good
    • 0
この回答へのお礼

ありがとうございます!
単語分割で無題のExcelを出力するところまでは出来ていたのですが、
仰る通り、単語の分割基準が曖昧で、
例えば「天気予報」というのが「天気」「予報」と、1つで良かったものが2つにわかれてしまうことが多く、
--------------------------
縦に並べたところから不要な単語を空白にし、残った単語が縦に並ぶ条件で番号を付与させて単語同士をくっつける。というのをExcelの関数で行い、
=IFERROR(INDEX(D:D,SMALL(IF(D:D<>"",ROW(D:D)),ROW())),"")
↑の関数で空白を詰め、Googleスプレッドシートで「UNIQUE」という関数を使用して列中の単語の重複をなくす。
--------------------------
という関数を行う必要があり、かなり重いので最終手段かなと思ってます…

単語同士の組合せができるのでありかなとは思っているのでもう少し悩んでみます!過去のマクロを探してまでご解答頂きありがとうございました!

お礼日時:2021/04/26 09:39

No3です。



>Word内で連なる漢字の単語を抜粋するようなマクロを組む事も出来ないかなと思いまして…
>お時間あれば組んでいただけないでしょうか……?
ソフトの作成を依頼したいのなら、質問サイトではなく、依頼サイトあるいは委託を受ける会社に依頼なさるのが適切です。

いずれにしろ、単語に分解・抽出するロジックを説明してくれない限り、私には手も足も出ませんし・・・
こんなことになりそうな予感はしていましたが、No4様の回答にあるソフトなどを利用するのも一法かも知れません。
    • good
    • 0
この回答へのお礼

助かりました

追記ありがとうございます!
やはり依頼するのがベストですよね……
質問の解答頂いてる間に職場の方と話してたのですが、趣味の範囲で出来るような内容じゃない気がしておりまして…

それでもfujilinさんの最初にご提示頂いたマクロで、やりたい事のひとつはできたのでとてもありがたいです…!
お時間を割いてくださりありがとうございました!

お礼日時:2021/04/22 22:37

ちょっと質問文を読み返してみて気になった点が。



>Word内の単語を説明するのに報告書をみながら専門用語をExcelにまとめる作業を毎度行っている

この作業を行なって作成したExcelのデータをWordから調べるってのもちょっと違うような気もするのですが、まず最優先として

>Word内の単語を説明するのに報告書をみながら専門用語をExcelにまとめる

この部分の自動化は完了しているのでしょうか?
そしてWord文書内の専門用語リストが全てExcelに作成されているかを調べるのが本来の手順に感じますが、私の気のせいでしょうか?
報告書の文章を品詞分析して該当しそうな語句をリストアップする辺りは、そんなソフトもあるのでやっぱ気にし過ぎなのでしょうね。
そうであればスル~して下さい。
    • good
    • 0
この回答へのお礼

細かいところを気にして下さりありがとうございます!

自動化は出来てないです…
今回の質問内容で聞きたかった内容の、
「検索に該当した単語を抽出」というのは、
手動で既に作っている単語集Excelを元に、
C3から下に向かって単語がずらりとならんでいるので、それを検索対象と出来るかなと!

なので、[検索先とするWord]に対応させる[検索対象のExcel]があるので、「Word文書内の専門用語リストが全てExcelに作成されているかを調べる」が可能になるかと思っています。。

お礼日時:2021/04/22 21:55

No2です。



>検索に該当しなかった単語も、条件付きで抽出したいのですが、
C1セルに
 =IF(B1="〇","","×")
を入れて、下方にフィルコピー。
    • good
    • 0
この回答へのお礼

2回目もありがとうございます!
お手数おかけします、、

「該当していないのを抜粋したい」というのは、Wordの方の単語を抜粋したいんです…!

Word内で連なる漢字の単語を抜粋するようなマクロを組む事も出来ないかなと思いまして…
お時間あれば組んでいただけないでしょうか……?

お礼日時:2021/04/22 21:25

それぞれはどのように作られているのか?の除法は必要だと思いますよ。


単にExcelの単語リスト?のある単語がWord内にあるか否かってだけのようにも思えますし。
⇒『検索に該当した単語を抽出』って検索する語句はExcelに既にある訳ですよね?
検索してヒットした語句から繋がる何かを取得と言うなら、その範囲はどこまでなのかってのは必要でしょ。
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます!
ざっくり言うと、ExcelのC3から↓にずらっと単語がならんでおり、
対象が複数ある(今後も行数は増え続ける)ので、参照対象が複雑で悩んでいるところです。
Word内から数個なら検索機能で検索で良いのですが…

お礼日時:2021/04/22 14:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています