我使用下面的代碼通過outlook發送多個電子郵件,但當我使用Excel 2007和Outlook 2007時,此代碼工作正常但是當我嘗試運行相同代碼在Excel 2013和Outlook 2013它拋出一個錯誤「運行時錯誤424:對象沒有定義」:運行時錯誤424:對象未定義「 - 在使用Outlook 2013發送電子郵件時
Set Doc = olMail.GetInspector.WordEditor
有人可以請檢查下面的代碼,讓我知道什麼是我在下面的代碼如果我想在2013版中使用相同的宏,需要更改嗎?
Sub Msmail()
Dim otlApp As Object
Dim olMail As Object
Set otlApp = CreateObject("Outlook.Application")
Set olMail = otlApp.CreateItem(olMailItem)
Set mainWB = ActiveWorkbook
Worksheets("Mail").Select
ActiveSheet.Calculate
Total_Site = Range("Total_Site")
For Site_Count = 1 To Total_Site
Application.StatusBar = False
ActiveSheet.Calculate
Range("Site_Count") = Site_Count
ActiveSheet.Calculate
If Range("Send_Email") = "Y" Then
Set mainWB = ActiveWorkbook
Set olMail = otlApp.CreateItem(olMailItem)
Set Doc = olMail.GetInspector.WordEditor '<~ ERROR 424 HERE
SendID = mainWB.Sheets("Mail").Range("To_List").Value
CCID = mainWB.Sheets("Mail").Range("Cc_List").Value
Subject = mainWB.Sheets("Mail").Range("Subject_Line").Value
Body = mainWB.Sheets("Summary").Range("Mail_Body").Value
AttachFile = mainWB.Sheets("Mail").Range("StrPath").Value
StrPath = ActiveSheet.Range("StrPath").Value
With olMail
.To = SendID
If CCID <> 0 Then
.CC = CCID
End If
.Subject = Subject
mainWB.Sheets("Summary").Range("Mail_Body").Copy
Set WrdRng = Doc.Range
.Display
WrdRng.Paste
'StrPath = Range("StrPath").Value
StrFile = Range("StrFile").Value & "*.*"
StrFile = Range("StrFile").Value
.Attachments.Add StrPath & "\" & StrFile
.Send
End With
End If
Next Site_Count
End Sub
那說你(或*將來你*)可能會喜歡知道我的開源項目[Rubberduck(http://rubberduckvba.com)包括優秀*智能壓頭的端口*添加 - 在那個在64位主機工作。 –
指定了「Option Explicit」嗎?看起來你的代碼甚至不會使用該選項進行編譯,看到許多使用的變量,但沒有在任何地方聲明。是否有任何理由延遲綁定Outlook類型庫,而不是在項目中添加引用,並且具有編譯時類型安全性,智能感知和自動完成?擁有智能感知功能可能會幫助您瞭解可用的成員,以及如何調用它們。 FWIW你正在創建兩個'olMail'對象 - 一個在循環外面,被忽略,另一個在循環內部。 –
我只需要循環內的olmail對象,我可以在循環外刪除olmail對象。但我在執行「Set Doc = olMail.GetInspector.WordEditor」時遇到問題,我是否需要爲此定義任何對象或變量。 –