プロが教えるわが家の防犯対策術!

こちら↓でルビを一括で削除するマクロを紹介しています。
http://oshiete1.goo.ne.jp/qa3327909.html

ここでのマクロの一部の仕様(?)に疑問に思うことがあり、質問をして
この仕様の理解を深めたいと思っています。
>  With Selection
>   .Range.PhoneticGuide ""
>  End With
「 PhoneticGuide 」はルビを追加したりするメソッドのようですが、
ルビを解除するマクロ記録をとるとこのメソッドが記録されて、上記
のような「 PhoneticGuide "" 」となっています。

これを利用して一括マクロを作成し、ルビを解除することは確かに可能
なのですが、本文内に別のフィールドコードで作成されたものも同時に
解除されてしまいます。

これは「 PhoneticGuide "" 」がルビだけを対象にしているのではない
メソッドだからなのでしょうか?
最初に載せたURL先のマクロ内容を、どのように変更をしたらルビ以外
のフィールドコードを対象から外すことが出来るのでしょうか。

「 PhoneticGuide "" 」の利用の仕方と、他のフィールドコードに影響
を与えない方法をご存知の方は教えてください。

A 回答 (2件)

こんにちは。



そのコードを書いたWendy02です。どうもです。(^^;

>最初に載せたURL先のマクロ内容を、どのように変更をしたらルビ以外
>のフィールドコードを対象から外すことが出来るのでしょうか。

今、掲示前のコードをみると、元は、そのための考慮はされていました。そのURLのご質問者さんの元のドキュメントの大きさなどを考慮して、たった判別する1行なのですが、極力、省メモリで書いたのです。

元のコードは、こういう内容です。

Sub orgFuricanaClear()
Dim f As Variant
With ActiveDocument
For Each f In .Fields
  If InStr(f.Code.FormattedText.Text, "\up") > 0 Then
  f.Select
  With Selection
   .Range.PhoneticGuide ""
  End With
  End If
Next
End With
End Sub


>PhoneticGuide

フィールドコード側が、私の勘違いでなければ、\upというスイッチが入りますので、それが判定できるものだと思っています。

>これは「 PhoneticGuide "" 」がルビだけを対象にしているのではないメソッドだからなのでしょうか?

もしかしたら、東アジアバージョンのみにしかなく、ユニバーサルに存在するフィールドコードとのマッチング(整合性)については、考慮されていないのかもしれません。

この回答への補足

回答している私としても反省する部分ですが、私のWordのバージョンは
Office XPにあるWord2002です。

質問文に載せたURL先でのバージョンはWord2000ですが、Word2002以降
との違いはあるのでしょうか?

それから
>フィールドコード側が、私の勘違いでなければ、\upというスイッチ
>が入りますので、それが判定できるものだと思っています。
これについて今試してみると、数式エディタの変わりに作成した数式の
一部が解除されてしまいました。\upスイッチで判別させるのは注意が
必要なようです。

そこでWord2002のルビ機能を使用したときに入る"\* jc2"を "\up"の
替わりにしても良いようですね

Sub orgFuricanaClear()
Dim f As Variant
With ActiveDocument
'一部変更
For Each f In .Fields
  If InStr(f.Code.FormattedText.Text, "\* jc2") > 0 Then
  f.Select
  With Selection
   .Range.PhoneticGuide ""
  End With
  End If
Next
End With
End Sub

これでルビだけを対象にすることは可能なようです。
ただし、ルビ部分を太字や斜体にするために"\* jc2"を削除していると
意味がないですが、私が通常使う分にはこちらのほうが使い勝手が良い
ようです。

実はこの質問を立ち上げた理由の一つに、フリーで紹介しているのWord
のアドインテンプレートを利用すると、ルビ以外のフィールドコードが
解除されるために、質問文のURL先で紹介しているマクロと同じもので
作成しているのではないかと思っていまして、今回のことをきっかけに
自分用のマクロを用意しておこうと思ったことがきっかけです。

もっと使い勝手が良いものを思いつきましたら、わがままな補足ですが
マクロを載せていただくと嬉しいです。

今回の回答も、今後の使用においてとても役にたつものだったので回答
をしてくださり、嬉しくなりました。本当にありがとうございました。

補足日時:2007/09/12 17:29
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
いつもマクロ関係では勉強させていただいており、今回も勉強のつもり
でお気に入りに入れていた質問内容を、いろいろ試す段階で疑問に思う
ことがあり、珍しく質問しました。

>東アジアバージョンのみにしかなく、ユニバーサルに存在するフィールドコード
>とのマッチング(整合性)については、考慮されていないのかもしれません。

これは確かに考えられますね。
フィールドコードそのものはユニバーサルに通じるWordの機能なので、
それを利用したルビについては PhoneticGuide を用意していても削除
することにはあまり考慮したものではないのかもしれませんね。

今回の回答も本当に勉強になりました。今後も何かとお世話になるかも
しれませんがよろしくお願いします。

お礼日時:2007/09/12 17:28

enunokokoro様


こんばんは。

いつもタイミングよくサポートしていただき、この場を借りて、改めて御礼申し上げます。

>質問文に載せたURL先でのバージョンはWord2000ですが、Word2002以降
>との違いはあるのでしょうか?

この件に関してはありませんが、そのURL先の内容では、Word2000とWord2002以降の違いは、検索や置換に影響があります。フィードコードを表示させないと検索できません。Word2000 は、マクロとしても、他にも簡単な部分で違うところがあります。どうやら、Excelとは違い、Wordは、Word2000とWord2002以上では、かなり違いがありそうです。

"\* jc2" は、私のほうも修正しておきました。ありがとうございました。私は、人にはいくつかの本を薦めるくせに、実は、Wordに関する資料なんていうのは、ほとんどないに等しいのです。かろうじて、「Office 97プログラマーズガイド」程度です。(^^;

今回のマクロの周辺に関しては、一応、この後は、オン・デマンドにさせていただきます。

ところで、Wordのマクロは、COMアドインが多いので、結構、この先、困ることが多くなるのではないか、と思っています。まさか、あまり先走って、VSTO(旧Develper)なんて高いものを買うのは、散財になってしまうので、しませんが、さりとて、VB.Net も、いまひとつ、勉強する気が起こらないので、先行きの見通しが暗いです。

それと、少し、Word VBAも休んでいると分からなくなってしまいます。鈍らない程度には、やっていないと、本当に忘れます。
    • good
    • 0
この回答へのお礼

再度の回答ありがとうございます。
Word2000とWord2002以降のマクロの違いは確かに感じています。
ルビの設定するマクロでも、Word2000用のマクロを使うと動作が異常に
なることがあったり、作業ウィンドウや描画キャンバスの関係での違い
があったりするようですから。

WordのマクロはExcelほど情報量が無いので、ここでWendy02様が回答を
しているものを参考にしたりして、ぼちぼち利用してり勉強したりして
います。
OfficeはExcelが基本になっているようで、Wordなどはおこぼれ扱いで
あるので、勉強するのも大変ですから、私もあまり手を出さないように
しています。

基本的なところは理解ができましたので、今回の質問についてはこれで
締め切らせていただきます。
Wendy02様が今後も活躍されますよう願いつつ、お礼申し上げます。

お礼日時:2007/09/13 13:08

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