在VBA中添加Outlook附件



在出现附件之前,我的代码一直运行良好。

我想做的事。

  1. 所有电子邮件地址都在B栏中
  2. 在C列中,每个电子邮件地址旁边都有文件路径和文件名。(C:\desktop\test.xlsm)
  3. 我正在尝试自动化向这些地址发送带有这些附件的电子邮件的过程。弹出一个用户表单,提示大量电子邮件的任何抄送、主题和文本

这是代码

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范围之外的GlobalPublic变量来使其工作。它当前是在第一个子中声明的,因此当您尝试在Send_Mail子中使用它时,该变量对该子是未知的,因此它告诉您它是空的。

不过,我会更多地选择第一种方法。

最新更新