在出现附件之前,我的代码一直运行良好。
我想做的事。
- 所有电子邮件地址都在B栏中
- 在C列中,每个电子邮件地址旁边都有文件路径和文件名。(C:\desktop\test.xlsm)
- 我正在尝试自动化向这些地址发送带有这些附件的电子邮件的过程。弹出一个用户表单,提示大量电子邮件的任何抄送、主题和文本
这是代码
Dim SendTo As String
Dim Atmt As String
Dim ToMSg As String
For i = 2 To LastRow
Atmt = ThisWorkbook.Sheets(1).Cells(i, 3).Value
SendTo = ThisWorkbook.Sheets(1).Cells(i, 2)
If SendTo <> "" Then
ToMSg = DraftBox.Value
Send_Mail SendTo, ToMSg
End If
Next i
Unload Me
End Sub
Sub Send_Mail(SendTo As String, ToMSg As String)
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = SendTo
.CC = CC.Value
.BCC = BCC.Value
.Subject = Subject.Value
.Body = ToMSg
.attachments.add Atmt
.Send
我已附上相关代码。它一直告诉我Atmt是空的。请帮忙。。
在Send_Mail
子中,您需要包含一个参数来传递附件路径:
Sub Send_Mail(SendTo As String, ToMSg As String, Atmt as String)
然后,当您调用Send_Mail
sub时,传递您想要提供的参数:
Send_Mail SendTo, ToMSg, Atmt
我使用Atmt
的事实完全是任意的,并且是基于您的示例。你可以在你的潜艇中任意调用字符串
您还可以通过将Atmt
声明为任何特定Sub
范围之外的Global
或Public
变量来使其工作。它当前是在第一个子中声明的,因此当您尝试在Send_Mail
子中使用它时,该变量对该子是未知的,因此它告诉您它是空的。
不过,我会更多地选择第一种方法。