如何在VBA中进行后期绑定?
我有一个通过VBA创建电子邮件的小功能,如何在VBA中进行后期绑定?,vba,excel,outlook,late-binding,Vba,Excel,Outlook,Late Binding,我有一个通过VBA创建电子邮件的小功能, 它从另一个与Excel文件一起工作的函数获取数据 我的问题是,我通过Excel 2016完成了所有这些,当我的一些同事尝试使用它时,出现了缺少引用的错误(Outlook Library 16.0) 因此,我查看了互联网解决方案,发现的解决方案很多,但最好是后期绑定。我已经阅读了所有关于它的内容,但我似乎并不真正理解下面的代码中发生了什么以及如何使它工作 Sub EscalateCase(what_address As String, subject_li
它从另一个与Excel文件一起工作的函数获取数据 我的问题是,我通过Excel 2016完成了所有这些,当我的一些同事尝试使用它时,出现了缺少引用的错误(Outlook Library 16.0) 因此,我查看了互联网解决方案,发现的解决方案很多,但最好是后期绑定。我已经阅读了所有关于它的内容,但我似乎并不真正理解下面的代码中发生了什么以及如何使它工作
Sub EscalateCase(what_address As String, subject_line As String, email_body As String)
Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
olMail.To = what_address
olMail.Subject = subject_line
olMail.BodyFormat = olFormatHTML
olMail.HTMLBody = email_body
olMail.Send
End Sub
因此,也许你可以帮我解决这个例子,看看我的实际案例。这是早期绑定:
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
这是后期绑定:
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
后期绑定不需要引用Outlook Library 16.0,而早期绑定则需要引用。但是,请注意,后期绑定稍微慢一点,您将无法获得该对象的intellisense 正如Callum所指出的,后期绑定涉及更改应用程序对对象的引用,而不是设置对库的引用 如果没有引用,Excel在运行时之前对Outlook一无所知。这也意味着不仅intellisense不起作用,Outlook中值的常量名称也不起作用 e、 g.在Outlooks即时窗口中,如果您键入
Application.CreateItem(
),您将弹出一大堆项目类型供选择。例如,olContactItem
Excel不知道olContactItem
是什么意思-它是一个Outlook常量,只有Outlook或引用Outlook的应用程序才能理解
在Outlooks即时窗口中,键入?olContactItem
,它将返回2
。这是您需要使用的数字,而不是常量名称
因此,您的代码将从Application.CreateItem(olContactItem)
toolApp.CreateItem(2)
您需要在整个代码中执行此操作。在这种情况下,我通常在这样的模块中全局定义常量,这样您就保留了变量的描述性值
Public Const olFormatHTML=2将
作为Outlook的Dim olApp。应用程序
更改为作为对象的Dim olApp