• 締切済み

ワードマクロ(VBA)の検索&置換機能を使って

こんにちは。 ワードマクロ初心者です。 テスト問題で、文章中のブランクに適切な語句を答えさせる問題を作ろうとしています。 最初にブランクなしの文章の、ブランクにしたいところに蛍光ペンでマークしておき、 マクロを実行することによってマーク部分をブランクに置換することを考えていましたが、行き詰ってしまいました。 今、考えていることは、以下のとおりです。 (1)ブランクに番号を振りたい。  たとえば、、、   [ 1 ]は・・・・。・・・を[ 2 ]という。 (2)同じ語句が入るブランクは同じ番号を振りたい。  たとえば、、、   ・・・を[ 1 ]という。[ 1 ]には・・・などがある。 (3)2種類のブランクを使いたい。→蛍光ペンの色によって使い分ける?  たとえば、「語句を答えさせるブランク」と「選択肢から答えさせるブランク」   空欄1~10には適する語句を。空欄A~Dには以下の解答群から選んで答えよ。 [Range].Find.Highlight = True を使うだけでは、(3)ができないようですが・・・。 (1)~(3)を満たしたマクロを作ることは可能ですか??

みんなの回答

回答No.2

No.1の回答者さんのように具体的アドバイスはできませんが、質問内容 と似たような内容のマクロが入った文書を作成したかたがいますので、 それを参考にする方法もあるかと思います。 http://www.geocities.jp/kuma_pooh1958/word001.htm

tks0111
質問者

お礼

enunokokoroさん: ご回答ありがとうございます! ネット上には、やはり同じようなことを考えてる方がいらっしゃるのですね! さっそく、参考にさせていただきました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 (3)の蛍光ペンというのは、VBAでは、色の区分けができません。よくワードマクロを使いたいと希望する方に、書式で操作しようとしますが、Wordの書式はExcelのような細かいプロパティがありませんから、仮に蛍光ペンでも、単に蛍光ペンで塗ったということだけしか反応しません。どうも、蛍光ペン自体は、VBAの外で扱われるようです。 私が、Word VBAで、いつも教えているのは、テキストベースで考えていくと、比較的、コードは楽になります、と言っています。Excel VBAができる方なら、そのレベルでは Word VBA もできます。Wordには、Paragraphs やSelection というExcelとは違うオブジェクトがありますから、詳しいテキストがない状態ではなかなか使えないです。 そこで、まとめますと、 (1)ブランクに番号を振りたい。 (2)同じ語句が入るブランクは同じ番号を振りたい。 (1)と(2)は、VBAの手順としては、[] の中の語句を拾い出し、それをオブジェクト上でリスト化します。Excelのような関数がありませんから、Dictionary オブジェクトぐらいが良いかと思います。(Excelの関数を借りてくるのは、かなりコードとして恥ずかしいです) もちろん、ユーザー定義関数を作るという方法もあります。どちらが良いかは、作ってみないと分かりません。数が少なければ、ユーザー定義関数のほうがよいかもしれませんが、結果は同じです。 (3)の対策では、たとえば、[○○○.] (コンマ付きや! 付き)などして、文字パターンでタイプを分けてあげることだと思います。 こんな感じで進められるのではないかと思います。

tks0111
質問者

お礼

Wendy02さん: ご回答ありがとうございます! その後なんとか自分で、(1)と(2)は ブランクに入れたい語句を配列に格納し、重複を調べることで解決しました。 (3)は蛍光ペンでは不可能なのですね・・・。 ご提案のとおり、VBAを組んでみたいと思います! 余談ですが・・・ エクセルVBAをかじったあとだと、VBA使えば何でもできる!と思ってたのですが、 いろいろ調べてみると、ワードVBAはちょっと物足りない気がします。(苦笑)