Vba Word 2010,将光标移动到特定文本,将文本替换为文件内容
我有一行文字写着“[EmbeddedReport]报告在这里[/EmbeddedReport]” 我想用一个空字符串替换“report goes here”,并将光标放在[EmbeddedReport]标记后面。然后我将运行以下代码Vba Word 2010,将光标移动到特定文本,将文本替换为文件内容,vba,text,ms-word,find,cursor,Vba,Text,Ms Word,Find,Cursor,我有一行文字写着“[EmbeddedReport]报告在这里[/EmbeddedReport]” 我想用一个空字符串替换“report goes here”,并将光标放在[EmbeddedReport]标记后面。然后我将运行以下代码 With Selection.InsertFile ('c:\Temp\Report.rtf') 这应该把报告的文本放在两个标记之间。我试图用以下代码定位光标。它似乎不起作用 .Selection.Find .ClearFormatting .MatchWh
With Selection.InsertFile ('c:\Temp\Report.rtf')
这应该把报告的文本放在两个标记之间。我试图用以下代码定位光标。它似乎不起作用
.Selection.Find
.ClearFormatting
.MatchWholeWord = False
.MatchCase = False
.Execute FindText:="report goes here"
唯一的问题是光标不在[EmbeddedReport]和[/EmbeddedReport]之间,并且在运行宏之前,文件会插入光标所在的任何位置。解决此类问题的常用方法是录制宏,并执行移动光标和突出显示文本所需的任务,然后检查宏为执行这些任务而编写的代码。这通常会让您了解如何定制自己的代码来执行相同的任务。您可能需要调用
查找对象两次:
首先-要找到整个短语[EmbeddedReport]报告,请点击这里[/EmbeddedReport]
,
第二步-要查找报告,请在第一步结果中找到文本。重要信息-您不需要替换该短语-它将被选中并替换为您使用Selection.InsertFile方法导入的文本
下面是建议的代码(针对示例文件进行测试):
dav1dsm1th…老实说,在我已经发布了这个问题之后,我确实想起了你,但感谢你的洞察力。我很感谢你花时间回复。抱歉。它不起作用是我的错。我没有删除你代码上面的一点代码。我还需要做一些测试,但我想你已经回答了我的问题。在我有机会进一步测试后,我会将它标记为答案。再次感谢。我只是建议了一种方法。。。没有密码。如果是@KazJaw回答了您的问题,请相信他提供了解决方案。KazJaw确实摆脱了“report goes here”,但在宏启动时,文件仍然插入光标所在的任何位置。光标似乎没有在[EmbeddedReport]和[EmbeddedReport]标记之间移动。KazJaw…对不起。它不起作用是我的错。我没有删除你代码上面的一点代码。我还需要做一些测试,但我想你已经回答了我的问题。在我有机会进一步测试后,我会将它标记为答案。我不必做第一个,只需找到第二个。再次感谢。刚才我看到了你在上面的第一个评论。如果您需要任何其他帮助,请在问题中添加完整/更多代码。
'FIRST- find [EmbeddedReport]report goes here[/EmbeddedReport]
With Selection.Find
.Text = "(\[EmbeddedReport\])text goes here(\[\/EmbeddedReport\])"
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
End With
'...and select it
Selection.Find.Execute
'SECOND- find only text to replace 'text goes here'
With Selection.Find
.Text = "text goes here"
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
End With
'end select it
Selection.Find.Execute
'now you could insert your file
Selection.InsertFile "c:\Temp\Report.rtf"