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