2

選択したテキストに基づいて、 FindinWordでフォーマットが自動的に入力されるようにしたいと思います。つまり、太字と斜体のテキストにカーソルを合わせると、このフォーマットに一致するすべてのテキストを見つけることができます。実際には、[フォーマット]->[フォント]ウィンドウでこれらのフォーマットを手動で選択する必要はありませ。ダイアログを検索します。

Wordのマクロ記録機能の助けを借りて、私は実用的な解決策にたどり着きました。

Sub FindFormat()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find.Font
        .Size = Selection.Font.Size
        .Bold = Selection.Font.Bold
        .Italic = Selection.Font.Italic
        .Underline = Selection.Font.Underline
        .StrikeThrough = Selection.Font.StrikeThrough
        .DoubleStrikeThrough = Selection.Font.DoubleStrikeThrough
        .Hidden = Selection.Font.Hidden
        .SmallCaps = Selection.Font.SmallCaps
        .AllCaps = Selection.Font.AllCaps
        .Color = Selection.Font.Color
        .Superscript = Selection.Font.Superscript
        .Subscript = Selection.Font.Subscript
    End With
End Sub

私はそれを技術的に使用して実行することができました。問題は、適用されたフォーマットを確認するのが難しいため、それほど直感的ではないことです。[検索]フィールドの下のコンマ区切りリストは終了せず、省略記号でウィンドウが切り取られ、適用されたすべてのフォーマットを読み取ることができなくなります。

MicrosoftWord検索

したがって、追いかけるために、VBAにニュートラルとは異なるフォーマットオプションのみを変更させ、残りをカットするにはどうすればよいですか?つまり、アンダースコアなし、フォントの色:自動などはFind 's Format(チェックボックスをニュートラル状態のままにします)?

さらに、 [検索]ダイアログを呼び出して、実際の検索を実行せずにこれらすべての設定で開くにはどうすればよいですか(たとえば、手動でテキストを追加したり、必要に応じて書式を変更したりできます)。

感謝の気持ちを込めて。

4

1 に答える 1

1

質問の最初の部分では、次のような IF ステートメントを使用します。

.Size = Selection.Font.Size
If Selection.Font.Bold = True Then .Bold = Selection.Font.Bold
If Selection.Font.Italic = True Then .Italic = Selection.Font.Italic
If Selection.Font.Underline <> wdUnderlineNone Then .Underline = Selection.Font.Underline
If Selection.Font.StrikeThrough = True Then .StrikeThrough = Selection.Font.StrikeThrough
If Selection.Font.DoubleStrikeThrough = True Then .DoubleStrikeThrough = Selection.Font.DoubleStrikeThrough
If Selection.Font.Hidden = True Then .Hidden = Selection.Font.Hidden
If Selection.Font.SmallCaps = True Then .SmallCaps = Selection.Font.SmallCaps
If Selection.Font.AllCaps = True Then .AllCaps = Selection.Font.AllCaps
If Selection.Font.ColorIndex <> wdAuto Then .ColorIndex = Selection.Font.ColorIndex
If Selection.Font.Superscript = True Then .Superscript = Selection.Font.Superscript
If Selection.Font.Subscript = True Then .Subscript = Selection.Font.Subscript

追跡したい他の値についても同様です。(Color ではなく ColorIndex を使用したことに注意してください。私は Word 2010 を使用しており、これは私にとって正しいプロパティです。)

第二部どうしようか迷ってます。理論的には、wdEditFind ダイアログ ボックスの Find 引数を設定しますが、実際には、値として文字列しかとらないようです。

もう1つ。可能性を循環させたい場合は、Find を使用するのがよいでしょう。ただし、特定の書式設定を持つすべてのテキストのリストを取得しようとしている場合は、選択したテキストを右クリックして、[スタイル] > [同様の書式設定を持つすべてのテキストを選択] を選択すると簡単です。その後、コピーして別のファイルに貼り付けることができます。ニーズに関連する場合と関連しない場合がありますが、場合によっては便利なトリックです。

于 2013-03-14T16:01:10.440 に答える