【问题标题】:Copy entire page to a text document with find?使用查找将整个页面复制到文本文档?
【发布时间】:2021-02-26 06:35:09
【问题描述】:

我找到了许多将所选页面复制到新文档的宏示例,但是,我找不到任何使用查找和替换来定位单词并将包含该单词的整个页面复制到新的 Word 文档或记事本。

Sub PageGrabber()


 Dim doc As Word.Document, rng As Word.Range
    
    On Error GoTo ERRORHANDLER
    Set doc = ActiveDocument
    Set rng = doc.Content
    


   
    Set rng = doc.Content
    With rng.Find
        .Text = "help"
        .Replacement.Text = " "
        .MatchWildcards = False
        .Wrap = wdFindStop
        .Format = False
        .Forward = True
        While .Execute
        ActiveDocument.Bookmarks("\page").Range.Copy
        Documents.Open FileName:="C:\test.docx"
        Selection.Paste
        rng.Collapse Word.WdCollapseDirection.wdCollapseEnd
        Wend
    End With
    
     
    

ERRORHANDLER:
    If Err.Number <> 0 Then
        MsgBox Err.Number & vbCr & Err.Description, vbCritical
        Err.Clear
    Else
        MsgBox "Action Complete"
    End If
    
End Sub

我试图在查找过程中使用while .execute 来抓取ActiveDocument.Bookmarks("\page").Range.Copy 对象并将其粘贴到单独的文档中,结果是复制了第一页而没有其他内容。

如果有人有示例链接或一些有用的建议来实现这一点,我们将不胜感激,谢谢。

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    例如:

    Sub PageGrabber()
    Application.ScreenUpdating = False
    Dim DocSrc As Document, DocTgt As Document
    Set DocSrc = ActiveDocument
    With DocSrc.Range
      With .Find
        .Text = "help"
        .Replacement.Text = " "
        .MatchWildcards = False
        .Wrap = wdFindStop
        .Format = False
        .Forward = True
        .Execute
      End With
      If .Find.Found = True Then
        Set DocTgt = Documents.Open(FileName:="C:\test.docx", AddToRecentFiles:=False, Visible:=False)
        DocTgt.Range.FormattedText = .Bookmarks("\page").Range.FormattedText
        DocTgt.Close True
      End If
    End With
    Set DocTgt = Nothing: Set DocSrc = Nothing
    Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • 在以下行运行此脚本时出现错误 5941:Set Rng = Rng.Bookmarks("\page").Range 不知道为什么,因为它最初是在查找书签对象。
    • 尝试删除 Set Rng = .Duplicate 代码行并将下一行改为 Set Rng = DocSrc.bookmarks("\page").Range
    • 最初发布的代码对我来说很好......不过,我已经简化了它。
    • 感谢您查看此内容,由于某种原因它不想与我的系统一起使用,在对 .bookmarks 的引用处,它在修改后标记集合的成员不存在它到DocSrc.bookmarks 我得到了文档的第一页返回,从我读到的页面在宏中真的很难处理,它可能只是那些狡猾的事情之一。
    • 这表明您没有完全按照发布的方式使用代码。此外,我希望 DocSrc.bookmarks("\page").Range 给出错误的结果。
    猜你喜欢
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多