3

Word文書を検索して、特定の文字列を(今のところ「Special」のハードコードされた値を使用して)指定された値に置き換えようとしています。マクロは、Wordエディターで正しいテキストを検出したことを明確に示していますが、置換機能が機能していません。これは私の絶対的な最初のVBA体験なので、可能であれば助けが必要です。次のコードはマクロです...

    Sub Test()
'
' Test Macro
'
'
    Documents.Open FileName:="C:\Users\abensch\Documents\NANTDocMerge\DMID - Backups\System Clock Ability.docx", _
        ConfirmConversions:=False, _
        ReadOnly:=False, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", _
        Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", _
        Format:=wdOpenFormatAuto, _
        XMLTransform:=""
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "Special"
        .Replacement.Text = "Potato"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute

End Sub

Select.Findで指定されたパラメーターのほとんどが必要かどうかはわかりません。それらを削除してもマクロのパフォーマンスには影響しないようですが、安全のためにそのままにしておくと思いました。2つのClearFormatting呼び出しですべての書式設定を削除しようとしましたが、Wordの書式設定の問題である可能性があるのではないかと思います。

4

1 に答える 1

4

すべて置換を実行する場合は、変更します

Selection.Find.Execute

Selection.Find.Execute Replace:=wdReplaceAll

すべてではなく最初のインスタンスを置き換えるだけの場合は、これを使用します

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "Special"
    .Replacement.Text = "Potato"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
With Selection
    If .Find.Forward = True Then
        .Collapse Direction:=wdCollapseStart
    Else
        .Collapse Direction:=wdCollapseEnd
    End If
    .Find.Execute Replace:=wdReplaceOne
End With
于 2012-06-13T16:33:56.807 に答える