2009-07-23 111 views

回答

1

人們可以在VB 6.0中使用MAPISession控件,所以我想它會在VBA可用了。

Using the MAPI Controls

另一種方法是使用Outlook對象模型,但它需要微軟的Outlook安裝。但是,大多數擁有Access的用戶通常也在其桌面上安裝Outlook。請參閱How to automate Outlook by using Visual Basic

還有一個決定 - 您可以使用.NET(VB.NET for exmaple)編寫一個非常小的組件,它將使用System.Net.Mail撰寫和發送SmtpMail。對於你作爲VBA開發者來說,它不會很難。你可以用一個函數SendEmail編寫一個類。 然後你可以將這個類以COM,看到Exposing .NET Framework Components to COM 然後,你將有一個ActiveX DLL,您可以從您的VBA項目調用(使用的CreateObject(「」)等)

+1

我不知道你指的具體控制,但並非所有的ActiveX控件都與Access兼容。另外,如果控件沒有正確安裝,它可以完全破壞Access應用程序。因此,在Access中最好避免使用內置的ActiveX控件以外的任何東西。 – 2009-07-23 19:38:51

1

如果您打算使用CDO解決方案(http://www.paulsadowski.com/WSH/cdo.htm),那麼您應該知道從Office 2007開始,CDO不再與Outlook捆綁在一起。如果您打算使用CDO解決方案,則需要下載CDO庫here,並確保所有計劃部署解決方案的計算機上都安裝了該庫。另一種選擇是Outlook Redemption。但是,要麼會工作得很好。兩者都需要部署。

+0

投票+1爲Outlook Redemption,偉大的工具集,特別是Outlook間諜! – 2009-07-27 15:38:09

1

有關此問題的綜合答案(從Access發送電子郵件),請參閱Tony Toews's Access EMail FAQ。 Tony建議這樣做,因爲這樣可以避免任何需要擔心CDO等組件的版本或分發DLL或安裝ActiveX控件的情況。正如託尼承認的那樣,缺點是它的代碼密集程度要高得多。