【发布时间】:2015-04-25 23:07:56
【问题描述】:
我已经能够通过 Gmail 从 Excel 发送电子邮件,某些 Excel 单元格定义了电子邮件的元数据、正文和附件。
这个子显然只在选定的单元格上运行。理想情况下,我希望这个子在第一行(在这种情况下为第 2 行)运行,然后在下一行运行,直到它到达末尾。
最终目标是能够通过 Excel 自动发送自定义电子邮件。
这是我目前所拥有的。
Sub CDO_Mail_Small_Text_2()
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim Flds As Variant
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "MYEMAIL"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "MYPASSWORD"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
If Sheets("Data").Range("G2").Value = "Statement" Then
strbody = "Test" & Sheets("Data").Range("E2").Value
Else
strbody = "Test 2"
End If
With iMsg
Set .Configuration = iConf
.To = Sheets("Data").Range("A2").Value
.CC = ""
.BCC = ""
.ReplyTo = Sheets("Data").Range("D2").Value
.From = Sheets("Data").Range("C2").Value & "<EMAIL>" 'This just changes the name, the email will come from 'sendusername' above
.Subject = Sheets("Data").Range("B2").Value
.TextBody = strbody
.AddAttachment "" 'don't put in "", just write direct path to file. Possible to do non-local?
.Send
End With
End Sub
任何帮助将不胜感激!!谢谢大家。
【问题讨论】:
-
为收件人添加参数到
Sub CDO_Mail_Small_Text_2(),然后将.To = Sheets("Data").Range("A2").Value更改为该参数,例如.To = Recipient。对其他更改参数执行相同操作。最后,运行foreach循环,例如foreach i in Sheets("Data").Range("A2:A10")然后Call Sub CDO_Mail_Small_Text_2(Parameters)。 -
@nhee - 花点时间用两个替补把这个写下来作为答案。
-
@Jeeped 和 Jules Hill,请看下文。