Excel 如何将vba中的word对象引用还原到早期的项目库?

Excel 如何将vba中的word对象引用还原到早期的项目库?,excel,vba,ms-word,Excel,Vba,Ms Word,我编写了一段代码,其中通过Excel VBA执行标签合并。我的客户机(2010)的Excel版本早于我(2013),由于Word对象引用了v 14和me 15,因此无法执行该部分 我认为问题在于早期绑定与后期绑定?我一直试图在VBA中不检查15引用的情况下使代码正常工作,但无论我知道的代码可能有什么变化,当我试图保存以前声明为对象的内容时,它仍然会进行调试。我很确定这也与此有关。在代码中,3个单独的标签模板用于生成3个标签文档。调用和关闭模板没有问题,它直接声明为工作簿路径。当我设置为对象的合并

我编写了一段代码,其中通过Excel VBA执行标签合并。我的客户机(2010)的Excel版本早于我(2013),由于Word对象引用了v 14和me 15,因此无法执行该部分

我认为问题在于早期绑定与后期绑定?我一直试图在VBA中不检查15引用的情况下使代码正常工作,但无论我知道的代码可能有什么变化,当我试图保存以前声明为对象的内容时,它仍然会进行调试。我很确定这也与此有关。在代码中,3个单独的标签模板用于生成3个标签文档。调用和关闭模板没有问题,它直接声明为工作簿路径。当我设置为对象的合并输出“wd”试图保存时,就会出现问题

Sub RunMerge()
    ' Word constants

    Dim wd As Object
    Dim wdocSource As Object
    Dim wks As Worksheet
    Dim Worksheets
    Dim strWorkbookName As String

    On Error Resume Next
    Set wd = GetObject(, "Word.Application")
    If wd Is Nothing Then
        Set wd = CreateObject("Word.Application")
    End If
    On Error GoTo 0

    Set Worksheets = ActiveWorkbook.Sheets
    Set wks = ActiveSheet
    With ActiveWorkbook
        For Each wks In Worksheets

            Set wdocSource = wd.Documents.Open(ThisWorkbook.Path & "\Label Templates\PRODUCT Label Template_" & wks.Name & ".docx")

            strWorkbookName = ThisWorkbook.Path & "\Order Output\Order_Output_ " & Format(Date, "dd.mm.yyyy") & ".xlsx"

            wdocSource.MailMerge.MainDocumentType = wdFormLabels

            wdocSource.MailMerge.OpenDataSource _
                Name:=strWorkbookName, _
                AddToRecentFiles:=False, _
                Revert:=False, _
                Format:=wdOpenFormatAuto, _
                Connection:="Data Source=" & strWorkbookName, _
                SQLStatement:="SELECT * FROM [" & wks.Name & "$]"

            With wdocSource.MailMerge
                .Destination = wdSendToNewDocument
                .SuppressBlankLines = True
                 With .DataSource
                     .FirstRecord = wdDefaultFirstRecord
                     .LastRecord = wdDefaultLastRecord
                 End With
                 .Execute Pause:=False
            End With

            wd.SaveAs2 (ThisWorkbook.Path & "\Label Output\Label Output_" & wks.Name & "_" & Format(Date, "dd.mm.yyyy") & ".docx")
            wdocSource.Close SaveChanges:=False

        Next wks
    End With

    wd.Visible = True
    Set wdocSource = Nothing
    Set wd = Nothing
    Set wks = Nothing
    Set Worksheets = Nothing
End Sub

一旦它点击
wd.SaveAs2
就会抛出一个对象引用错误,如果我将其更改为
ActiveDocument
,或document或word.something,或将其调暗,设置它,将其放在末尾/作为对象,则没有任何效果

您的代码基本上是为后期绑定而设置的,但是您引用内置的Word常量违反了后期绑定原则,这就需要Word对象库引用。删除Word对象库引用并修改代码,使其在后期绑定时完全可用(例如,将内置Word常量替换为其数值)。

我肯定会记住,在将来-在本例中,我刚刚下载了excel 2010,选择了14.0 Word引用,代码运行得非常好,我什么都不需要改变。我想唯一的问题是我引用了15,因为用户没有该库,所以它总是被认为是缺失的。这是意料之中的——前提是你在Office 2010 PC上设置了单词reference——因为引用在Office版本之间是向前的,而不是向后的。