替换并执行自动文本

时间:2017-04-18 02:08:31

标签: replace ms-word word-vba

我是VBA的新手;我正在尝试创建一个应用程序,我想在文档中替换文本时放置文本并能够执行自动文本命令( F3 )。

我的问题是在更换光标丢失后我收到一条消息,表明没有有效的代码供选择。有人可以帮忙。

我正在使用以下代码:

Sub VbaAutomation()
  With Selection.Find
    .ClearFormatting
    .Text = "-A11"
    .Replacement.ClearFormatting
    .Replacement.Text = ""
    .Execute Replace:=wdReplaceAll, Forward:=True, _
  Wrap:=wdFindContinue   
    .Execute
    SendKeys "{F3}"
  End With
End Sub

更好的解决方案可以是替换文本和执行代码。

我想执行宏,用自动文本代码替换任何构造块代码。例如,我的word文档有ABCD, CDEF代码,宏会自动遍历构建块代码,并用精确的自动文本代码段落替换它。

2 个答案:

答案 0 :(得分:0)

这不是您查找和替换vba的方式。您不需要使用 F3 。您必须收集.Execute的结果,并在您找到某些内容时进行迭代。

尝试此操作,以替换当前文档中-A11的每一个匹配项:

Sub VbaAutomation()
On Error GoTo ErrorTrap

    Dim i As Long, crazyUpLimit As Long
    Dim isFound As Boolean
    isFound = True
    crazyUpLimit = 1000

    Do While (isFound And i < crazyUpLimit)
        With Selection.Find
            .ClearFormatting
            .Text = "-A11"
            .Replacement.ClearFormatting
            .Replacement.Text = ""
        ' here is the trick to go on as long as you find
            isFound = .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
        End With
        i = i + 1

    Loop

Exit Sub

FilePatternError:
    MsgBox ActiveDocument.Name & ": unknown patter of document (" & fPattern & " expected)."

Exit Sub
ErrorTrap:
    Beep
    MsgBox "FAILED" & Chr(13) & "Error number: " & err & Chr(13) & Error(err)

End Sub

PS:添加了常规错误处理和crazyUpLimit以避免阻止您的PC - 它对我自己常常有用。

分享&amp;享受!

答案 1 :(得分:0)

您是否在整个文档中自动执行自动文本功能? 我需要在所有文档中执行它,有可能吗?

J.Chomel