我正在尝试创建一个 VBA 代码,该代码将能够告诉 excel 从其中具有任何值(文件路径)的特定列中添加多个附件。
例如。我的 Excel 列 BD2:BD2000 仅包含电子邮件附件列表,我希望 Excel 从单元格 BD2:BD20000 中选择所有值(如果它们不为空,并且基本上是文件路径)并将其作为多个附件附加到我的 Outlook 电子邮件.
但是,我无法让它工作。
这是我到目前为止所拥有的:
Private Sub ToggleButton3_Click()
Dim OutApp As Object
Dim OutMail As Object
Set emailRng = Worksheets("Workings").Range("BC2:BC2000")
Set FilepathRng = Worksheets("Workings").Range("BD2:BD2000")
For Each cl In emailRng
sTo = sTo & ";" & cl.Value
Next
sTo = Mid(sTo, 2)
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
Next
sTo = Mid(sTo, 2)
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = ComboBox17.Value
.CC = sTo
.BCC = ""
.Subject = TextBox18.Value
.Body = "Hi there"
.Attachments.add = FilepathRng
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
感谢是否有人愿意提供帮助。我是 VBA 的新手,我正在尝试为此找到简单的解决方案,因此我将不胜感激任何人可以提供的任何详细且易于理解/建议/解决方案。
谢谢!
最佳答案
此代码将附加范围“BC2:BC2000”中的所有文件路径。
警告:
在一封电子邮件中添加这么多文件不是一个好方法。您的系统可能会挂起。要添加 2000 个文件,请相应地更改 For Loop 中的范围。
Private Sub ToggleButton3_Click()
Dim OutApp As Object
Dim OutMail As Object
Dim cl As Range
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
Set emailRng = Worksheets("Workings").Range("BC2:BC2000")
For Each cl In emailRng
sTo = sTo & ";" & cl.Value
Next
sTo = Mid(sTo, 2)
With OutMail
.To = ComboBox17.Value
.CC = sTo
.BCC = ""
.Subject = TextBox18.Value
.Body = "Hi there"
For Each cl In Worksheets("Workings").Range("BD2:BD2000")
If Len(cl.Value) > 1 Then
.Attachments.Add cl.Value
End If
Next
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
关于excel - 如何从excel中包含任何值(文件路径)的列中添加多个附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56521816/