从 Outlook 调用 Excel 宏会冻结 Outlook



我很难创建一个打开文件、调用 excel 宏并保存电子邮件草稿的 Outlook 宏。

在过程方面 - 我知道让Excel宏发送邮件比在程序之间切换要容易得多,但由于大文件和其他不重要的约束,现在这是不可能的。

这是展望代码

Sub bodeemail()
Dim ExApp As Excel.Application
Dim ExWbk As Workbook
Set ExApp = New Excel.Application
Set ExWbk = ExApp.Workbooks.Open("X:Dropboxxxxxxxxx.xlsm")
ExApp.Visible = False
ExWbk.Application.Run "Module1.BodeFlash"
ExWbk.Close SaveChanges:=False
End Sub

这是Excel代码。

Sub BODEFlash()
ThisWorkbook.Sheets("Email 2.0").Activate
bode = ActiveSheet.Cells(1, "AG")
bodetext = Format(bode, "#,###")
Dim OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim OutMail As Object
Set OutMail = OutApp.CreateItem(olMailItem)
Dim signature As String
Dim tstamp As String
Dim strBody As String

Application.ScreenUpdating = True
' Subject location
tstamp = "Subject " & Format(Date, "mm/dd/yyyy")
OutMail.Display
signature = OutMail.HTMLBody
' Change change email list here

On Error Resume Next
With OutMail
.To = "foo@bar.com" 
.BCC = ""
.Subject = tstamp
.HTMLBody = "Flash Approved. " & bodetext & vbNewLine & signature
.Save
End With
'Tidy Up
Set OutApp = Nothing
Set OutMail = Nothing
End Sub

我有一种感觉,这与对象库或 DoWhile 子句有关,但无法确定它。宏运行,创建电子邮件,并立即冻结 outlook(必须在任务管理器中重新启动(。

任何建议将不胜感激。

从您的代码中可以看出,Outlook仍在等待excel。 因此永远不会摆脱这一点:ExWbk.Application.Run "Module1.BodeFlash"

我建议把你的 excel 代码的末尾放上:

Application.Quit

看看这是否有效。 它应该完全退出 excel 应用程序,但我不知道它是否也会关闭 Outlook。

最新更新