VBA晚期绑定 – 基于没有Word引用的用户计算机的用户表单

我有一个Excel的用户窗体/工作表打开一个Word文档/模板,并将该Word文档保存为一个PDF,具有特定的文件名,在同一个文件夹。

在我的Excel中的参考,我有Word对象库启用。 我的用户表单将在其他用户计算机上使用,这些用户计算机将不会启用这些引用(并且对于所有用户来说都太麻烦了)。

我的理解是,我所拥有的代码是“早期绑定”,它需要“后期绑定”来绕过其他用户启用对Word的引用的需要。

我的问题是我不知道或了解如何用我的代码做到这一点:

Dim objWord As Word.Application Dim docWord As Word.Document Set objWord = CreateObject("Word.Application") Set docWord = objWord.Documents.Open(ThisWorkbook.Path & "\MyNewWordDocument.doc") docWord.ExportAsFixedFormat OutputFileName:=ThisWorkbook.Path & "\" + Cells(1, 6) + " - Offer Letter.pdf", _ ExportFormat:=wdExportFormatPDF objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges objWord.Quit 

这个代码对我自己来说是完全可用的 但是,如前所述,由于未引用Word,因此不适用于其他人。

如果其他用户与您的Office版本完全相同,则不存在任何问题。 如果他们有不同的版本,你需要延迟绑定,这只涉及到声明variables作为对象,并声明你在Word的库中使用的任何常量:

 Dim objWord As Object Dim docWord As Object const wdExportFormatPDF as long = 17 const wdDoNotSaveChanges as long = 0 Set objWord = CreateObject("Word.Application") Set docWord = objWord.Documents.Open(ThisWorkbook.Path & "\MyNewWordDocument.doc") docWord.ExportAsFixedFormat OutputFileName:=ThisWorkbook.Path & "\" + _ Cells(1, 6) + " - Offer Letter.pdf", _ ExportFormat:=wdExportFormatPDF objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges objWord.Quit 

您还应该删除Word引用。

不妨添加一个插件: http : //excelmatters.com/2013/09/23/vba-references-and-early-binding-vs-late-binding/