0

質問: ループを作成してデータの範囲を検索/選択し、文字スタイルを適用する方法を知りたいです。各範囲は、開始タグと終了タグで識別できます。 例: aCS1a これらの aCS1a タグと zCS1z タグの間のテキストは、Word ドキュメント zCS1z に既に存在する cs1 という名前の文字スタイルでフォーマットされています。

ここまでのプロセス: (1) データベースは、段落スタイルと文字スタイルの書式設定を識別するために使用される「タグ」を含むテキスト ファイルをエクスポートします。(2) Microsoft Word のマクロは、各段落を特定の段落スタイルで書式設定します。

ヘルプが必要です: (3) 次に、aCS1a の各インスタンスを選択します。フォーマットするテキストはここに zCS1z あり、「cs1」という名前の文字スタイルを aCS1a タグと zCS1z タグの間のテキストに適用します。

例: aCS1aKrusty Clown SchoolzCS1z、aCS2aProfessor Homer SimpsonzCS2z、aCS1aBSc(Hons)zCS1z aCS2aSpringfieldzCS2z、aCS1aPhDzCS1z aCS2aShelbyvillezCS2z によって提示された候補者。

申し訳ありませんが、プレビューでタグを囲む山かっこが壊れたため、「タグ」を aCS1a と zCS1z に変更する必要がありました。

cs1 = Microsoft Word ドキュメント内の特定の文字スタイル、cs2 = Microsoft Word ドキュメント内の別の文字スタイル

マクロのループは、適切な文字スタイルでフォーマットされている aCS1a zCS1z、aCS2a zCS2z の「タグ」を削除できます。または、検索/置換マクロを記録して、処理の最終ステップとしてタグを削除できます。

4

1 に答える 1

0

ここStackflowやhttp://www.pcreview.co.uk/forums/word-select-text-search-delete-macro-t3868065.htmlなどの他のサイトで同様の質問/回答を使用して、長い間つなぎ合わせることができましたトリックを実行するための複雑で面倒なマクロ。開始の cs1 タグと終了の /cs1 タグの周りの山かっこが消えてしまったことをお詫びします。

Sub TaggedTextIsCS1()
'
'Find <cs1>text inbetween</cs1> and replace with Character Style CS1
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Style = ActiveDocument.Styles("CS1")
    With Selection.Find
        .Text = "\<cs1\>*\</cs1\>"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

    'Find <start> tag and remove
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Style = ActiveDocument.Styles("CS1")
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "<cs1>"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

    'Find <end> tag and remove
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Style = ActiveDocument.Styles("CS1")
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "</cs1>"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

End Sub
于 2013-08-20T11:40:40.753 に答える