簡體   English   中英

使用Excel VBA通​​過模板在Outlook 2010中創建電子郵件

[英]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中的引用設置為:

  • VBA
  • Microsoft Excel 14.0對象庫
  • OLE自動化
  • Microsoft Office 14.0對象庫
  • Microsoft Forms 2.0對象庫
  • Microsoft腳本運行時

這還不是答案,但是我想收集評論中正在發生的事情,因為我認為這是到目前為止所看到的最好的方向。

我已經測試過您問題中的代碼,並且使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM