我一直在尋找一個答案爲這幾個星期,它的駕駛我瘋狂:Excel宏生成的電子郵件,只有當IDE是開放的工作
我有一個宏複製特定細胞到一個新的電子郵件在Outlook中。如果IDE處於打開狀態,它就可以完美工作,但通常情況下,如果它不是將內容粘貼到當前表單中而不是新電子郵件中。甚至更奇怪的是,它有時會在IDE關閉時工作,但99%的時間不會,這使得這是一個噩夢來診斷。
這讓我發瘋,你們是我唯一的希望!
Sub EmailReports()
Dim rngSubject As Range
Dim rngTo As Range
Dim rngBody As Range
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
xRow = ActiveCell.Row
RMName = Sheets("Dashboard").Range("B" & xRow)
LastTaskRow = Sheets(RMName).Range("A1")
With Target
Range("E" & xRow) = Format(Now(), "MM/DD/YYYY")
End With
Set rngTo = Range("C" & xRow)
Set rngSubject = Worksheets("Dashboard").Range("K4")
Set rngBody = Worksheets(RMName).Range("D4:E" & LastTaskRow)
rngBody.Copy
With objMail
.To = rngTo
.Subject = rngSubject
.Display
End With
SendKeys "^({v})", True
Set objOutlook = Nothing
Set objMail = Nothing
End Sub
我試着添加德米特里的建議,儘管我不確定我是否正確添加了它。
Sub EmailReports()
Dim rngSubject As Range
Dim rngTo As Range
Dim rngBody As Range
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
xRow = ActiveCell.Row
RMName = Sheets("Dashboard").Range("B" & xRow)
LastTaskRow = Sheets(RMName).Range("A1")
With Target
Range("E" & xRow) = Format(Now(), "MM/DD/YYYY")
End With
Set rngTo = Range("C" & xRow)
Set rngSubject = Worksheets("Dashboard").Range("K4")
Set rngBody = Worksheets(RMName).Range("D4:E" & LastTaskRow)
rngBody.Copy
With objMail
.To = rngTo
.Subject = rngSubject
.Display
End With
Set objHTML = CreateObject("htmlfile")
ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")
objMail.Body = rngBody.Text
Set objOutlook = Nothing
Set objMail = Nothing
End Sub
非常感謝你的幫助,梅德!我試圖在SendKeys曾經的地方添加過。它現在給我一個錯誤。「類型不匹配:不能強制參數,Outlook無法翻譯你的字符串。」我是否將其添加到錯誤的空間中?另外,文本會保持我在身體細胞上的格式嗎? – Scott 2014-09-05 22:50:52
請顯示您的最新代碼。 – 2014-09-06 19:55:24
用我的代碼更新了我的問題。 – Scott 2014-09-08 18:19:31