我试图从Excel发送电子邮件,它使用保存在A2数据表中的透视表范围发送附件,并且每天都是动态的。
在.TO
字段中,我收到错误
对象不支持此方法。
Sub emailtest()
Dim objOutlook As Object
Dim objMail As Object
Dim rngTo As String
Dim rngSubject As String
Dim rngBody As String
Dim LastRow As Long
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
Sheets("Data").Select
LastRow = Worksheets("Data").Range("A" & Rows.Count).End(xlUp).Row
With objMail
.To = Worksheets("Data").Range("A2: A" & LastRow - 1)
.Subject = "Sell Fail Trade"
.Body = "Please find today's sell report"
.Attachments.Add "C\Temp Folder"
.Display 'Instead of .Display, you can use .Send to send the email _
or .Save to save a copy in the drafts folder
End With
Set objOutlook = Nothing
Set objMail = Nothing
End Sub
2条答案
按热度按时间hgncfbus1#
To
-属性要求使用单个字符串作为参数。如果有多个人应接收邮件,则需要使用;
连接这些名称如果
LastRow-1
大于3,则区域中有多个单元格,Worksheets("Data").Range("A2: A" & LastRow - 1)
将为您提供一个二维数组,是的,它是二维的,即使它只包含一列。VBA中有一个很好的函数
join
,它可以连接数组的内容,但在本例中,它不能使用,因为它只适用于一维数组。To你必须手动遍历这个范围来创建to-string,我建议创建一个简单的,可重用的函数(例如,也可以用于cc字段)。
然后在创建邮件的例程中写入:
kb5ga3dv2#
To
属性是一个字符串属性。它是Outlook项目的收件人显示名称的字符串列表,以分号分隔。因此,您需要从Excel中的Range
对象提取字符串。例如,您可以尝试使用Range.Value属性,该属性返回或设置一个变量值,该值表示指定范围的值。或
如果目标范围是多维的(或由多个单元格组成),则需要基于通过每个单元格的范围值构建
To
字符串,然后才将其分配给To
属性。