我修改了VBA代码以发送到X邮件地址X附件。在第一次迭代中,代码可以完美运行,邮件将以正确的文件原样发送。在第二次迭代中,代码在附加文件时停止(在objMail.Attachments.Add archivoFuente
行上显示此屏幕:
我的代码从第一张纸中获取主数据,其中第二列中包含邮件地址,而用户名和文件扩展名中的文件名都经过了标准化处理,第三列中。完成文件名后,将其附加到目录,然后添加正文,主题和其他内容供用户在邮件中查看,最后发送邮件,并清空字符串变量以开始文本迭代,但是随后遇到即使文件夹中的文件以及与标准文件名相同的文件名也会出现错误...
Sub bulkMail()
Dim outlookApp As Outlook.Application
Dim objMail As Outlook.MailItem
Dim archivoFuente, toMail, ccMail As String
Dim i, j As Integer
Dim fila As Long
fila = Cells(Rows.Count, 2).End(xlUp).Row
'On Error Resume Next
Set outlookApp = New Outlook.Application
Set objMail = outlookApp.CreateItem(olMailItem)
For i = 2 To fila
toMail = Cells(i, 2) ' & ";"
archivoFuente = "C:\Users\..." & Cells(i, 3)
objMail.Attachments.Add archivoFuente ' on the second iteration, stops here
ThisWorkbook.Save
'archivoFuente = ThisWorkbook.FullName
'objMail.Attachments.Add archivoFuente
objMail.To = toMail
objMail.Subject = "TEST"
objMail.Body = "LOREM," & vbNewLine & "IPSUM." & vbNewLine & "BYE."
objMail.Send
toMail = ""
archivoFuente = ""
Next i
MsgBox "DONE!"
End Sub
感谢任何帮助!
答案 0 :(得分:1)
简单的解决方法:将Set objMail = outlookApp.CreateItem(olMailItem)
移入循环中。
每行需要一个新的邮件项目。代码原样失败,因为您试图将文件附加到刚发送的电子邮件中(第一次迭代)。
您可以解决的其他问题:
Dim archivoFuente, toMail, ccMail As String
-只有ccMail
是String
。您正在寻找Dim archivoFuente As String, toMail As String, ccMail As String
。Dim i, j As Integer
-应该为Dim i As Long, j As Long
。 Excel具有超过Integer
无法处理的行。