我是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
代码,宏会自动遍历构建块代码,并用精确的自动文本代码段落替换它。
答案 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