我使用下面的代码通过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”时遇到问题,我是否需要为此定义任何对象或变量。 –