Wordのマクロで文章内のキーワードをチェックする方法

このQ&Aのポイント
  • Wordのマクロを使えば、任意のキーワードが文章内に含まれるかどうかをチェックすることができます。
  • ExcelではCOUNTIF関数を使ってキーワードの含有チェックができますが、Wordでは特定のエリアに対してキーワードの含有チェックを行いたい場合、マクロを組む必要があります。
  • マクロを組むことで、Word上でキーワードの含有チェックを行うフォーマットを作成することができます。これにより、エクセルと同様に便利にキーワードチェックを行うことができます。
回答を見る
  • ベストアンサー

Wordのマクロで…

Excelでは、A1のセルに長文を入力して、A2のセルにキーワードを入力し、 「このキーワードが長文の中に含まれるか否か?」をチェックするには =IF(COUNTIF(A1,"*"&A2&"*"),"○","×") のような式で答えが得られます。 ところで、Wordの場合、何らかの方法で文章のエリアを設定し、 (段落単位でもテキストボックスでも何でも構わないのですが) そのエリア内に入力した文章に、任意のキーワードが含まれるかどうか? をチェックするような、マクロを組むことはできるでしょうか? 複数のキーワードを含めなくてはならない長文を書くことが多く、 ついついキーワードもれをやってしまうので、そういうフォーマットが 作れたら便利だと思うのですが… いまはエクセルで、冒頭のような形でチェックしていますが、 やはり文章入力そのものはWordの方が入力しやすいので、 Wordで一発でできると助かると思うのですが… どなたか、よい知恵を授けてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1:misatoanna です。 特定のテキストボックスに入力したキーワードを参照してチェックするように します。 テキストボックスをひとつ作成し、その名前を適当に変更します。 ここでは、とりあえず TBox という名前にしましょう。 ↓ 前回の回答の Selection.MoveEndUntil Cset:=vbCr の行の前に、次の3行を挿入します。 ------------  Dim txt As String  txt = ActiveDocument.Shapes("TBox").TextFrame.TextRange.Text  txt = Replace(txt, vbCr, "") ↓ 前回の回答の  .Find.Execute Findtext:="検索語", Format:=False の部分を  .Find.Execute Findtext:=txt, Format:=False にします。

y_hisakata
質問者

お礼

ありがとうございます! こんなに早急に、適格にご対応くださいまして心よりお礼を申し上げます。

その他の回答 (1)

回答No.1

このような内容でしょうか。 カーソル位置から改行マークまで(段落内)で検索。 ---------- Sub Test()  Selection.MoveEndUntil Cset:=vbCr  With Selection   .Find.Execute Findtext:="検索語", Format:=False   Select Case .Find.Found    Case True: MsgBox "○"    Case False: MsgBox "×"   End Select  End With End Sub テキストボックス内全体を検索する場合は、ボックスそのものを選択した状態で 実行します。

y_hisakata
質問者

お礼

ありがとうございます! ただ、このマクロだと「検索語」が変わるたびにマクロを編集しなくてはなりませんね。 たとえば、特定のテキストボックスを別に作って、そこに放り込んだキーワードを参照してチェックするといったような場合はどうしたらよろしいでしょうか? キーワード用のテキストボックスに入力した文字列を変数として取り込むようにする、といった処理が必要になるでしょうか?

関連するQ&A

  • WordからExcelへの変換(1文1セル)

    WordとExcelについて、質問をさせていただきました。 Wordの文書をExcelにしたいのです、Wordで打った文章のワンセンテンス(マル(。)まで)をExcelの1つのセルに入れたいのですが、 なかなかうまくいきません。 Word→Text形式で保存→拡張子をCSVに変換→エクセル という工程を経てWordをExcelにする事はできるのですが、こうやって変換すると Wordの1段落がExcelの1セルに落ちてしまい、マル(。)で区切ってセルに移す事ができません。 イメージとしては <Word> あいうえお。かきくけこ。さしすせそ。たちつてと。 <Excel> A列1行目:あいうえお。 A列2行目:かきくけこ。 A列3行目:さしすせそ。 WordからTextに変換するときに「行の挿入」が出てきて「CR」とか「LF」等選べるようになっていて いろいろ試してみたのですが、Wordの文章内で自然に折り返されたところで、Excelでは2行目のセルに変換されてしまい、 なかなかうまくいきません。 何かよい方法があれば、アドバイス頂ければ幸いです。 どうぞ、よろしくお願いいたします。

  • word文章をexcelで…

    wordの文章をexcelで編集することは不可能でしょうか? word文章を切り取り、excelのセルに貼り付けるというのではなく、word文章で改行されている箇所が自動でexcelでも1つ下のセルに入力されるような方法はないでしょうか?詳しい方がいらしたら教えてください。

  • マクロについて

    お世話になっております。 エクセルで 2009年 2010年 11 11 22 33 33 2009年は11と22と33、2010年は11と33というのがあり、 11は2009年かつ2010年、22は2009年のみ、33は2009年かつ2010年と IF関数をつかって、(A1セルには2009年、B1セルには2020年、A2セルには11、A3セルには22、A4セルには33、B2セルには11、B3セルには33と入力されているとするとき) C列に、B2、B3、B3、C2、C3のすべての番号を重複なしでならべ、D列に、下記の式を入れ、その番号が2009と2010のどのような集合に属しているのかをマクロ式でかきたいのですが、おしえていただけないでしょうか???番号が増えも対応できるものが知りたいです。初心者のためお手数をおかけいたします。 (例)D2セルには, =IF(AND(COUNTIF(A:A,C1)>0,COUNTIF(B:B,C1)>0),A$1&"かつ"&B$1,IF(COUNTIF(A:A,C1)>0,A$1&"のみ","")&IF(COUNTIF(B:B,C1),B$1&"のみ",""))

  • Wordのオートフォーマットについて

    Word2002で一括フォーマットを行うと、「書式変更:隠し文字」という吹き出しが変更履歴として現れます。 吹き出しから伸びた点線は、段落記号の直前を指しています。 しかしどうしてこんなところに隠し文字なのか、また、何がどう隠されたのかさっぱり分かりません。 元の文章は標準スタイルです。 一行だけ入力し、Enterキーで段落を変えました。 一行目の終わりと、まだ何も入力していない二行目の冒頭に段落記号がある状態です。 問題の箇所は二行目の冒頭です。 これは一体何なのでしょうか?

  • Excelでの文章をWordへコピー

    会社で文章を数人で分担して入力したのですが、 Wordで入力した人、Excelで入力した人とまちまちで、 Wordに統一することになりました。 (Word、Excelとも2000です。) Excelで入力した物をWordに入力し直したいのですが、 Excelでの文章をコピーしてWordに貼り付けると、セルも一緒に くっついて来てしまいます。 (印刷する分には大丈夫なのかもしれませんが) Excel同士なら、「形式を選択して貼付」で「値のみ」にすれば セルや表などは反映されず、文字の分だけで済みますが、 Wordへ貼付した物も単純に文字だけを反映させるには どうすればいいのでしょうか? Excelの文章をコピーしてWordに貼付した時、Excelのセルを 引っ張って来ないようにするにはどうすればいいでしょうか? それともセルを引っ張って来ていても無視して大丈夫なのでしょうか? 最終的にはWordで表形式(行幅は不定)にしたいのですが…。 (Excelで入力していた人は罫線は使用せず、単純にセルにへのベタ打ちでした)

  • WORD文書の行末を全て自動的に改行する方法

    WORD文書を開いてEXCELにコピーして利用する場合、WORD文書としては標準の文字数で行替えされている文章が、改行記号のある段落単位でEXCELの1セルに入力されてしまいます。 例えばWORD文書で1段落150字の文章が40字で行替えされていると4行になり、4行目に改行記号が入っているとします。これをコピーしてEXCEL文書に貼り付けると1セルに4行分のデータが入ってしまいます。セルを連結したりセル内で折り返しを使わずにWORD文書の見かけのレイアウトをそのまま保持したい。 EXCELにcopy&pasteしてWORD文書と同様のレイアウトを保持するには次の方法が良いと思いますが、方法が不明です。何方かわかる方教えてください。 ・WORD文書の行末を全て自動的に改行した上でEXCELにcopy&pasteする

  • Excel 関数で多数の複数条件・OR条件を指定

    こんにちは。Excelのことでわからない事を教えてください。 該当セル内に複数条件を指定して、いずれかが当てはまれば指定した文字列が表示されるようにしたいのですが、その条件が100個くらいになってしまいます。 例えば、 A1セルに【AAまたはBBまたはCC】が入力されたらC1セルに【ああ】と表示する。 A1セルに【DDまたはEEまたはFF】が入力されたらC1セルに【いい】と表示する。 A1セルに【GGまたはHHまたはII】が入力されたらC1セルに【うう】と表示する。 というようなことをしたいので、私は、C1セルに以下のような関数を作りました。 =IF(OR(COUNTIF(A1,"*AA*"),COUNTIF(A1,"*BB*"),COUNTIF(A1,"*CC*")),"ああ",IF(OR(COUNTIF(A1,"*DD*"),COUNTIF(A1,"*EE*"),COUNTIF(A1,"*FF*")),"いい",IF(OR(COUNTIF(A1,"*GG*"),COUNTIF(A1,"*HH*"),COUNTIF(A1,"*II*")),"うう","")) それで、その指定したい条件が100件くらいになってしまうのですが(指定するワードが100個という意味です)、地道に作っていくしかないのでしょうか。もっとスマートなやり方はありますか?ワードは今後追加もしくは削除していく可能性があるので、こんな作り方でいいのか悩んでいます。 そもそもこのようなものをExcelでやろうとするのは間違いですか? 皆様のお知恵を拝借したいと思います。アドバイス宜しくお願いします。

  • ビギナーです。よく分りません。

    アンケートのような文章をエクセルで作成したいと思ったのですが、どうやれば良いのかよくわかりません。 ワードならば、書式・段落設定が分るのですが、エクセルでのやり方がわかりません。(セルの使い方も含めて) 色々やってみたのですが、ワードで描いたようなものができませんでした。 エクセルを使った文章を時々見掛けるので、可能であるとは思うのですが。 あと、それにチェックボックスを入れたいのですが、フォームからの3-Dタイプのものとコントロールツールボックスからのチェックボックスのどちらがよいのでしょうか? 教えて下さい。(エクセル2002)

  • Wordの表をExcelの表に貼り付ける

    Wordで作成した表をExcelに貼り付ける方法について、質問します。 バージョンは、2007または2010を想定します。 http://office.microsoft.com/ja-jp/excel-help/HP010254130.aspx に記載の方法で実施した場合、 「Word の表の各セルのデータはワークシートの個別のセルに貼り付けられます」 の記述とは裏腹に、 添付図のように、 Wordの中では同じセルの中にある文字列であっても、 改行(改段落)がなされているものは、別のセルに以降してしまいます。 Wordの中では、改段落は普通にやるので、 (インデントをするさいに文章内改行だと、インデントしたくないものまで引きずられるから) 改段落をした際にも、きちんと、 Wordで同じセルの中にあるものは、Excelでも同じセルの中に入るように 貼りつけたいのですが、そのようなことは可能でしょうか? 出来るとしたら方法を教えてください。よろしくお願いします。

  • ワードでエクセルのような機能

    エクセルで「=A1」と入力すると、A1のセルに入力されている文字等が表示されると思いますが、ワードでもこんな機能はありますか? 契約書の書式を作成しているのですが、会社名など同じ文章が何度も出てくるので一度入力したら勝手に反映されるよう簡素化したいのです。よろしくお願いします。

専門家に質問してみよう