簡體   English   中英

簡單的Word VBA替換宏

[英]Simple Word VBA replacement macro

我正在嘗試搜索Word文檔並使用指定值替換特定字符串(使用“特殊”的硬編碼值)。 該宏清楚地表明它在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中的大多數指定參數是否必要,並且刪除它們似乎不會影響宏的性能,但我想我會讓它們保持安全。 我想知道它是否可能是一個Word格式問題,雖然我試圖用兩個ClearFormatting調用刪除所有格式。

如果你想做一個全部替換然后改變

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM