Excel 在VBA中创建MAPI会话
我需要从excel表格发送一些电子邮件。我目前使用的是Excel2010,但它也应该适用于2013。我在网上搜索了一个解决方案,找到了一个函数,不幸的是,这个函数不适合我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
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讨价还价更容易。谢谢你指路!