我正在尝试从活动电子表格中的单元格中绘制可编辑的输入。我设法在Outlook中生成一封电子邮件并附加多个文件。
问题在于不是通过数据(和不同的目录输入)在每个单元格中循环,从而附加" x"单个文件的数量,它附加相同的文件" x"次。
Option Explicit
Sub TESTCreateEmail()
'define variables for outlook
Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem
'define variables for attachements to email
Dim wb As Workbook
Dim ws As Worksheet
Dim LoopAttach As Integer
Dim x As Integer
Dim y As Integer
x = Range("E9", Range("E100").End(xlUp)).Count
'set parameters for outlook
Set olApp = New Outlook.Application
Set olMail = olApp.CreateItem(olMailItem)
'set parameters for attachements to email
Set wb = ThisWorkbook
Set ws = wb.Application.ActiveSheet
'create email
With olMail
.To = ws.Range("H9")
.CC = ws.Range("I9")
olMail.SentOnBehalfOfName = "email@email.com"
olMail.Recipients.ResolveAll
.BodyFormat = olFormatHTML
olMail.HTMLBody = "<html><p><font face=""Calibri""><font size=3>Dear Sir/ Madam,</p>"
'loop to attach multiple files
For LoopAttach = 1 To x
.Attachments.Add ws.Range("E9").Offset(x - 1, 0) _
& ws.Range("F9").Offset(x - 1, 0)
Next LoopAttach
.Display
End With
End Sub
答案 0 :(得分:0)
在您的代码变量中,x值在执行循环期间保持不变。这就是为什么每次执行循环时都附加相同的文件。
试试这个
For LoopAttach = x To 1 Step -1
.Attachments.Add ws.Range("E9").Offset(LoopAttach - 1, 0) _
& ws.Range("F9").Offset(LoopAttach - 1, 0)
Next LoopAttach
答案 1 :(得分:0)
这是一个简单的错误 - x是for循环的常量限制。您需要使用LoopAttach
变量而不是x
。
For LoopAttach = 1 To x
.Attachments.Add ws.Range("E9").Offset(LoopAttach - 1, 0) _
& ws.Range("F9").Offset(LoopAttach - 1, 0)
Next LoopAttach