在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 - 任何想法可能是什么问题?

由于提前,
弗兰克

+0

问题可能是您正在运行64位office/windows,而'MSMAPI'不支持它。 [**'THIS' **](http://www.gfi.com/blog/32bit-object-64bit-environment/)可能是一个可能的解决方案 – 2013-12-18 16:50:00

+0

是的,我正在运行一个64位版本。我希望避免注册表破解,因为excel表单将用于我的同事的多台计算机。因此,如果使用MAPI发送邮件不适用于64位系统 - 也许还有其他方式通过Excel发送邮件? – Aaginor

+1

为什么不使用outlook? – 2013-12-18 17:11:27

尝试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(但有很多额外的好处)。