[英]Using Excel VBA to create email in Outlook 2010 from template
我的代碼在XP上的Excel / Outlook 2003中運行良好,現在正在運行Windows 7 Excel / Outlook 2010,並收到錯誤消息:
運行時錯誤“ 287”:應用程序定義或對象定義的錯誤。
我的代碼基於以下答案: 通過使用Outlook模板和設置變量從Excel 2007 VBA發送電子郵件
我正在創建我的Outlook對象和mailitem,如下所示:
Dim MyOlApp
Dim MyOlItem
Set MyOlApp = CreateObject("Outlook.Application")
Set MyOlItem = MyOlApp.CreateItemFromTemplate(Range("oftLocation").Value) 'user defined location
我引用MyOlItem
后出現錯誤,該代碼替換了.htmlBody
中的.htmlBody
修改為.Body
並沒有區別,顯示相同的錯誤。
我在VBA中的引用設置為:
這還不是答案,但是我想收集評論中正在發生的事情,因為我認為這是到目前為止所看到的最好的方向。
我已經測試過您問題中的代碼,並且使用Outlook 2010和Excel 2010對我來說效果很好。
當Excel嘗試與Outlook進行交互時,Programmatic Access設置將發揮作用。
我相信,如果您的殺毒軟件已過期,它們將設置為警告狀態。 這類似於Windows檢測AntiVirus狀態的方式。 因此,當您從Excel訪問Outlook時,通常會出現一個提示,要求獲得許可g。 就我而言,在正常情況下,您將允許該操作,並且代碼將正常進行。
但是,我看到人們發現錯誤287的邏輯是用戶在該提示下單擊否。 這似乎並不適合你的情況。 您需要仔細查看Outlook中與Programmatic Access有關的Trust Center設置。 與防病毒軟件有交互作用,信任中心也將提供一些信息。 如果您未使用管理員權限運行Outlook,則將禁用該設置。 讓我知道你的想法。
到目前為止,我還沒有明確表示出來,但是我也想提請您注意AV。 這是它試圖停止的事情之一。 也許有一個被炒魷魚的規則阻止了這種情況。
無論哪種方式,您都應該能夠在另一個環境中進行測試,以查看它是否特別是您的系統。 我想我們都同意這不是專門的代碼,因為我知道它可以在其他地方使用。
我可以建議您可能需要打開並運行Outlook副本。 使用CreateObject()
可能不夠。
若要以編程方式執行此操作,請如下修改VBA宏:
Shell "Outlook.exe" 'Opens Outlook
' Your existing code goes here
Shell "taskkill /IM Outlook.exe" 'Closes Outlook again when code is finished (optional)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.