
こちら↓でルビを一括で削除するマクロを紹介しています。
http://oshiete1.goo.ne.jp/qa3327909.html
ここでのマクロの一部の仕様(?)に疑問に思うことがあり、質問をして
この仕様の理解を深めたいと思っています。
> With Selection
> .Range.PhoneticGuide ""
> End With
「 PhoneticGuide 」はルビを追加したりするメソッドのようですが、
ルビを解除するマクロ記録をとるとこのメソッドが記録されて、上記
のような「 PhoneticGuide "" 」となっています。
これを利用して一括マクロを作成し、ルビを解除することは確かに可能
なのですが、本文内に別のフィールドコードで作成されたものも同時に
解除されてしまいます。
これは「 PhoneticGuide "" 」がルビだけを対象にしているのではない
メソッドだからなのでしょうか?
最初に載せたURL先のマクロ内容を、どのように変更をしたらルビ以外
のフィールドコードを対象から外すことが出来るのでしょうか。
「 PhoneticGuide "" 」の利用の仕方と、他のフィールドコードに影響
を与えない方法をご存知の方は教えてください。
No.1ベストアンサー
- 回答日時:
こんにちは。
そのコードを書いた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先で紹介しているマクロと同じもので
作成しているのではないかと思っていまして、今回のことをきっかけに
自分用のマクロを用意しておこうと思ったことがきっかけです。
もっと使い勝手が良いものを思いつきましたら、わがままな補足ですが
マクロを載せていただくと嬉しいです。
今回の回答も、今後の使用においてとても役にたつものだったので回答
をしてくださり、嬉しくなりました。本当にありがとうございました。
早速の回答ありがとうございます。
いつもマクロ関係では勉強させていただいており、今回も勉強のつもり
でお気に入りに入れていた質問内容を、いろいろ試す段階で疑問に思う
ことがあり、珍しく質問しました。
>東アジアバージョンのみにしかなく、ユニバーサルに存在するフィールドコード
>とのマッチング(整合性)については、考慮されていないのかもしれません。
これは確かに考えられますね。
フィールドコードそのものはユニバーサルに通じるWordの機能なので、
それを利用したルビについては PhoneticGuide を用意していても削除
することにはあまり考慮したものではないのかもしれませんね。
今回の回答も本当に勉強になりました。今後も何かとお世話になるかも
しれませんがよろしくお願いします。
No.2
- 回答日時:
enunokokoro様
こんばんは。
いつもタイミングよくサポートしていただき、この場を借りて、改めて御礼申し上げます。
>質問文に載せたURL先でのバージョンはWord2000ですが、Word2002以降
>との違いはあるのでしょうか?
この件に関してはありませんが、そのURL先の内容では、Word2000とWord2002以降の違いは、検索や置換に影響があります。フィードコードを表示させないと検索できません。Word2000 は、マクロとしても、他にも簡単な部分で違うところがあります。どうやら、Excelとは違い、Wordは、Word2000とWord2002以上では、かなり違いがありそうです。
"\* jc2" は、私のほうも修正しておきました。ありがとうございました。私は、人にはいくつかの本を薦めるくせに、実は、Wordに関する資料なんていうのは、ほとんどないに等しいのです。かろうじて、「Office 97プログラマーズガイド」程度です。(^^;
今回のマクロの周辺に関しては、一応、この後は、オン・デマンドにさせていただきます。
ところで、Wordのマクロは、COMアドインが多いので、結構、この先、困ることが多くなるのではないか、と思っています。まさか、あまり先走って、VSTO(旧Develper)なんて高いものを買うのは、散財になってしまうので、しませんが、さりとて、VB.Net も、いまひとつ、勉強する気が起こらないので、先行きの見通しが暗いです。
それと、少し、Word VBAも休んでいると分からなくなってしまいます。鈍らない程度には、やっていないと、本当に忘れます。
再度の回答ありがとうございます。
Word2000とWord2002以降のマクロの違いは確かに感じています。
ルビの設定するマクロでも、Word2000用のマクロを使うと動作が異常に
なることがあったり、作業ウィンドウや描画キャンバスの関係での違い
があったりするようですから。
WordのマクロはExcelほど情報量が無いので、ここでWendy02様が回答を
しているものを参考にしたりして、ぼちぼち利用してり勉強したりして
います。
OfficeはExcelが基本になっているようで、Wordなどはおこぼれ扱いで
あるので、勉強するのも大変ですから、私もあまり手を出さないように
しています。
基本的なところは理解ができましたので、今回の質問についてはこれで
締め切らせていただきます。
Wendy02様が今後も活躍されますよう願いつつ、お礼申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Visual Basic(VBA) vbaエクセルマクロについて RemoveDuplicatesを使わずに、重複行を削除すらマクロを作 3 2023/03/02 22:03
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
Accessのクエリの結果を、既存...
-
access2021 強制終了してしまう
-
access2021 VBA メソッドまたは...
-
Access Error3061 パラメータが...
-
Access VBA [リモートサーバー...
-
アクセスの更新クエリでカレン...
-
ACCESS VBA でのエラー解決の根...
-
AccessVBAで任意の複数リンクテ...
-
Microsoft365にAccessってあり...
-
Accessのクエリで、replace関数...
-
Excelを開く時と閉じる時に一度...
-
列が255以上のCSVファイルをAcc...
-
Accessのフォーム上のテキスト...
-
エクセルのVBAについて教えてく...
-
Access で半角スペースと全角ス...
-
MS.Access でサブフォーム付の...
-
Accessのレポートについて
-
access2019の起動が遅い
-
access2021 メッセージボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
Accessのクエリで、replace関数...
-
access2021 強制終了してしまう
-
ACCESS VBA でのエラー解決の根...
-
Access VBA [リモートサーバー...
-
Accessのスプレッドシートエク...
-
Accessのレポートについて
-
access2021 VBA メソッドまたは...
-
Access Error3061 パラメータが...
-
access2019 チェックボックスと...
-
Accessのクエリの結果を、既存...
-
accessでlaccdbファイルが削除...
-
Access VBA を利用して、フォル...
-
accessデータを指定したExcel、...
-
Accessのリンクテーブルのパス...
-
列が255以上のCSVファイルをAcc...
-
Accessのクエリの印刷設定
-
Accessでレポートを印刷する時...
-
Accessフォームの配色テーマを...
-
Accessデータベースに含まれる...
おすすめ情報