Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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文档并删除找到的文本_Vba_Excel_Ms Word - Fatal编程技术网

Vba 搜索word文档并删除找到的文本

Vba 搜索word文档并删除找到的文本,vba,excel,ms-word,Vba,Excel,Ms Word,尝试通过excel VBA搜索word文档并删除找到的文本: Set objWord = CreateObject("Word.Application") objWord.Visible = True path = "C:\Test.docx" txt1 = "Search text" Set objDoc = objWord.Documents.Open(path) With objWord.ActiveDocument Set

尝试通过excel VBA搜索word文档并删除找到的文本:

 Set objWord = CreateObject("Word.Application")

    objWord.Visible = True
    path = "C:\Test.docx"
    txt1 = "Search text"
    Set objDoc = objWord.Documents.Open(path)


    With objWord.ActiveDocument
        Set myRange = .Content
        With myRange.Find
            .Text = txt1
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Execute

            Selection.Delete

        End With
    End With
但是,它似乎没有删除文本


任何帮助,请选择。删除操作非常有效-它会删除所选文本。在您的情况下,您没有选择任何内容,因此不会删除任何内容

尝试按如下方式执行替换:

Set objDoc = objWord.Documents.Open(path)
With objDoc.Content.Find
    .Text = txt1
    .Replacement.Text = ""
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll, Forward:=True
End With

维蒂亚塔说的话。。。如果您正在执行
objWord.Selection.Find
(我不建议这样做),那么
Selection.Delete
应该可以工作,只要
Find
成功,否则会删除其他内容
myRange.Delete也可以,只要您测试
Find.Execute
是否返回True。所以总的来说,维蒂亚塔的建议是最好的办法。@Cindymister你能举一个删除的例子吗?看你对维蒂亚塔的评论:你说的“线”是什么意思?空段落?您搜索的内容位于它自己的段落中,删除它会留下该段落吗?然后尝试searchig
txt1&^p
@Cindymister是的,就是这样,它会留下段落。你的修复成功了-谢谢!!不幸的是,我什么也没做。我在网上找到了一个解决方案,它使用:With objWord.ActiveDocument Set myRange=.Content With myRange.Find.Execute FindText:=txt1,replacetwith:=“”,Replace:=1。Execute FindText:=txt2,replacetwith:=“”,Replace:=1 End With End With,但是在替换文本时它会留下一行-我需要将其删除,因为该行会在我的流程中的稍后部分打乱流程