【问题标题】:Replace and execute autotext替换并执行自动文本
【发布时间】:2020-07-04 22:21:35
【问题描述】:

我是 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 代码,宏会自动迭代构建块代码并将其替换为精确的自动文本代码段落。

【问题讨论】:

  • 我不完全理解你的意图,但注意到似乎没有人愿意建议你我冒昧地问一个问题,F3 与你想要实现的目标有什么关系。您的代码在所选文本中查找“-A11”并将其替换为“”。没有提到“构建块代码”或“自动文本代码”,如果 F3 与其中任何一个或两者都有某种关联,它与它所在的其余代码无关。对于它的价值:你应该接受你的概念只允许用“”替换“-A11”。仅此而已。
  • 谢谢 是的 F3 是运行自动文本和构建块。我想替换 -p1 以便我可以执行构建块
  • 我们正在互相交谈。 (1) F3 调用程序。在 VBA 中,如果你想调用一个程序,你需要知道它的名字。但是,我很确定 F3 调用的程序不是 VBA 宏。因此,您必须使用正确的 VBA 语法调用它来运行它的程序类型。 (2) 如果您想用构建块替换文档中的占位符,您需要指定构建块,找到占位符并替换。如果您可以将构建块加载到 Find 方法的 Replacement.Text 属性中,您可能会为此目的使用您的代码版本。
  • 感谢 F3 用作 sendKeys {"F3"}。所以基本上我想复制文本,然后在复制后同时执行 F3 键。
  • 您是否让SendKeys "{F3}" 工作而不对文本进行任何更改?

标签: vba replace ms-word


【解决方案1】:

这不是您查找和替换 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 - 它通常对我自己有用。

分享和享受!

【讨论】:

    【解决方案2】:

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

    J.乔梅尔

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      相关资源
      最近更新 更多