在VBA中创建MAPI会话
问题描述:
我需要从excel表单发送一些eMails。我目前使用Excel2010,但它也应该2013年。我搜索网络的解决方案,并找到了一个函数,这不幸不适合我。在VBA中创建MAPI会话
Sub SendMail(Recepient As String, Address As String, Subject As String, Contents As String)
Dim mapi_session As MSMAPI.MAPISession
Dim mapi_messages As MSMAPI.MAPIMessages
'Set mapi_session = New MSMAPI.MAPISession
Set mapi_session = CreateObject("MAPI.Session")
...
在线路Set mapi_session = New MSMAPI.MAPISession
它抛出一个错误,说“无法创建由ActiveX组件对象(I从德语翻译)”。我做了一些更多的调查,发现一个建议使用CreateObject的线程,但它仍然会抛出相同的错误。 我预先包含了msmapi32.ocx。
我很新VBA - 任何想法可能是什么问题?
由于提前,
弗兰克
答
尝试Set mapi_session = CreateObject("MSMAPI.MAPISession")
。
答
CDO 1.21(即“MAPI.Session
”是)不再由Outlook安装。您可以从https://www.microsoft.com/en-us/download/details.aspx?id=3671下载它,但请记住它不再由Microsoft开发或支持。
你对CDO 1.21做了什么?您确实需要更改您的代码才能使用Outlook Object Model。您也可以使用Redemption - 它的RDO对象系列(与CDO 1.21类似)是一个进程内MAPI包装,它的RDOSession对象类似于CDO 1.21中的MAPI.Session
(但有很多额外的好处)。
问题可能是您正在运行64位office/windows,而'MSMAPI'不支持它。 [**'THIS' **](http://www.gfi.com/blog/32bit-object-64bit-environment/)可能是一个可能的解决方案 – 2013-12-18 16:50:00
是的,我正在运行一个64位版本。我希望避免注册表破解,因为excel表单将用于我的同事的多台计算机。因此,如果使用MAPI发送邮件不适用于64位系统 - 也许还有其他方式通过Excel发送邮件? – Aaginor
为什么不使用outlook? – 2013-12-18 17:11:27