0

角かっことその中のテキストを見つけて、フィールド コードhttp://office.microsoft.com/en-us/word-help/field-codes-ref-field-HP005186139.aspxに置き換えようとしています。

Sub replacereftag()
    ReplacementText "<test>", "REF Test.Test1 "
End Sub

Private Sub ReplacementText(findtext As String, replacetext As String)
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = findtext
        .myrange.Field = replacetext
        .Wrap = wdFindContinue
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
4

1 に答える 1

0

私の意見では、コードでさまざまな種類のロジックを使用する必要があります。主な違いは、最初にテキストを見つけて選択する必要があることです。次のステップとして、選択範囲にフィールドを追加する必要があります。次のサブルーチンは、これらすべてのことを行うものを改良したものです。それがあなたが探しているものであることを願っています。(コード内のいくつかのコメントを参照してください)

Sub replacereftag()
    ReplacementText "<test>", "REF Test.Test1 "
    'if you keep .MatchWildcards = True below then call next sub in this way:
    'ReplacementText "\<test\>", "REF Test.Test1 "
End Sub

Private Sub ReplacementText(findtext As String, replacetext As String)
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = findtext
        'I removed something here
        .Wrap = wdFindContinue
        .MatchWildcards = False '!!!- both <> are special characters!!
    End With

    'looping to search for all occurrences
    Do While Selection.Find.Execute
        'add a field here
        Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
            "REF  Test.Test1", PreserveFormatting:=False
    Loop
End Sub

編集

Sub replacereftag()
    ReplacementText "<test>", "REF Test.Test"

    Dim i
    for i=1 to 10          'change to last number
        ReplacementText "<test" & i & ">", "REF Test.Test" & i
    next i
End Sub
于 2013-08-29T13:54:51.667 に答える