我在创建一个Outlook宏(打开一个文件,调用一个Excel宏并保存电子邮件草稿)时遇到了很多困难。
在流程方面,我知道让Excel宏发送邮件比在程序之间切换要容易得多,但是由于文件大和其他不重要的限制,目前无法实现。
这是Outlook代码
Sub bodeemail()
Dim ExApp As Excel.Application
Dim ExWbk As Workbook
Set ExApp = New Excel.Application
Set ExWbk = ExApp.Workbooks.Open("X:\Dropbox\xxxx\xxxx.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(必须在任务管理器中重新启动)。
任何建议将不胜感激。
答案 0 :(得分:0)
据您的代码显示,Outlook仍在等待excel。因此将永远不会超出:ExWbk.Application.Run "Module1.BodeFlash"
我建议将您的excel代码结尾:
Application.Quit
,看看是否可行。它应该完全退出excel应用程序,但我不知道它是否也会关闭Outlook。