微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VBA 从一个 Word 文档复制到另一个从 Excel

如何解决VBA 从一个 Word 文档复制到另一个从 Excel

我有一个 Excel 工作表,它打开一个空白 Word 文档作为“主”和一个“临时”单独的 Word 文档。我试图移到“Master”的末尾,复制整个“Temporary”并粘贴到“Master”,然后在“Master”上输入分页符。我在“.Selection.EndKey unit:=wdStory Extend:=wdMove”、“.Add.Content.Paste”和“.Selection.InsertBreak Type:=7”上遇到错误,我不知道为什么。我将迭代多个“临时”文档并将它们一个一个添加到“主”,但不想移动到循环,直到我可以从“临时”到“主”进行一轮基本的复制粘贴。还有一个 boomark 替换子程序,我没有展示它来降低社区的复杂性,因此“临时”文档中的“Fields.Update”。

Public wb As Excel.Workbook
Public Path As String
Public MasterWordobj
Public MasterCOI
Public TempWordobj
Public TempCOI

Sub COI()

'Initialize Worksheet/Workbook and unprotect worksheet and cells
  ActiveSheet.Unprotect
  ThisWorkbook.Sheets("COI").Cells.Locked = False
  Set wb = ActiveWorkbook
  
  On Error GoTo ErrorHandler

'Path for Master COI Template
    Path = "xxx"

'Create a Master Word Session
  Set MasterWordobj = CreateObject("Word.Application")
  Set MasterCOI = MasterWordobj.Documents.Add


'Define Path for Temporary COI Template
    Path = "XXX"

'Create a Temp Word Session
  Set TempWordobj = CreateObject("Word.Application")
  Set TempCOI = TempWordobj.Documents.Add(Path)

'Activate Temporary Word Template,Update Fields,copy All
    With TempWordobj
            .Visible = True
            .Selection.WholeStory
            .Selection.Fields.Update
            .Selection.WholeStory
            .ActiveWindow.WindowState = 1
            .Activate
            .Selection.WholeStory
            .Selection.copy
    End With
           
'Paste and insert Page Break in Master Template
    With MasterWordobj
        .Visible = True
        .ActiveWindow.WindowState = 1
        .Selection.EndKey unit:=wdStory,Extend:=wdMove
        .Add.Content.Paste
        .Selection.InsertBreak Type:=7
        .Activate
    End With
  
 'Release the Word objects to save memory and exit macro
ErrorExit:
   Set MasterWordobj = nothing
   Set TempWordobj = nothing
   Exit Sub

'Error Handling routine
ErrorHandler:
   If Err Then
      MsgBox "Error No: " & Err.Number & "; There is a problem"
      
      If Not MasterWordobj Is nothing Then
        MasterWordobj.Quit False
      End If
      
      If Not TempWordobj Is nothing Then
        TempWordobj.Quit False
      End If
    
      Resume ErrorExit
   End If

End Sub

解决方法

如果您尚未在 Excel VBA 项目中添加对 Word 的引用,则您的 Excel VBA 将无法使用 wdStory 等常量。如果您在模块中使用 Option Explicit(您绝对应该这样做),则会标记出这一点。

您要么需要添加引用,要么在 VBA 中声明缺少的常量及其值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。