Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Word 2010,将光标移动到特定文本,将文本替换为文件内容_Vba_Text_Ms Word_Find_Cursor - Fatal编程技术网

Vba Word 2010,将光标移动到特定文本,将文本替换为文件内容

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

我有一行文字写着“[EmbeddedReport]报告在这里[/EmbeddedReport]”

我想用一个空字符串替换“report goes here”,并将光标放在[EmbeddedReport]标记后面。然后我将运行以下代码

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"