Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在VBA中创建MAPI会话_Excel_Vba_Outlook_Mapi - Fatal编程技术网

Excel 在VBA中创建MAPI会话

Excel 在VBA中创建MAPI会话,excel,vba,outlook,mapi,Excel,Vba,Outlook,Mapi,我需要从excel表格发送一些电子邮件。我目前使用的是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.M

我需要从excel表格发送一些电子邮件。我目前使用的是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的新手-知道问题出在哪里吗

提前感谢,

Frank

试试看,Outlook不再安装CDO 1.21(即“
mapi.session
”)了。您可以从下载,但请记住,它不再由Microsoft开发或支持


您如何处理CDO 1.21?您确实需要更改代码以仅使用。您也可以使用-它的对象系列(与CDO 1.21一样)是一个in-proc MAPI包装器,其对象类似于CDO 1.21中的
MAPI.Session
(但有很多额外的优点)。

问题可能是您正在运行64位office/windows,而
MSMAPI
不支持它。可能是一个可能的解决方案是的,我运行的是64位版本。我希望避免注册表黑客,因为excel表格将在我同事的多台计算机上使用。所以,如果使用MAPI发送邮件不适用于64位系统,那么可能还有其他方法通过Excel发送邮件?我可以创建一个函数,将邮件发送给多个人,每个人都附带一个pdf吗?为什么使用excel的想法是:一列是邮件地址,一列是每个人的文件名。然后将相应的文件作为附件发送给每个人。如果有Excel和VBA以外的其他解决方案,我会接受的……好的,使用System.Net.Mail编写一个小型C#程序似乎比与VBA讨价还价更容易。谢谢你指路!