在VBA中创建MAPI会话

时间:2013-12-18 16:46:27

标签: excel vba outlook mapi

我需要从excel-sheet发送一些电子邮件。我目前使用的是Excel2010,但它也应该适用于2013.我在网上寻找解决方案并找到了一个功能,不幸的是这对我不起作用。

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组件创建对象(我从德语翻译)”。我做了一些调查,并遇到了一个建议使用CreateObject的线程,但它仍然会抛出相同的错误。 我事先包含了msmapi32.ocx。

我对VBA很陌生 - 不知道问题可能是什么?

提前致谢,
弗兰克

2 个答案:

答案 0 :(得分:1)

CD不再安装CDO 1.21(即#34; MAPI.Session")。您可以从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对象类似于{{1在CDO 1.21中(但有很多额外的好处)。

答案 1 :(得分:0)

尝试Set mapi_session = CreateObject("MSMAPI.MAPISession")