MailEnvelope的VBA停止工作

时间:2018-06-01 15:47:33

标签: excel vba excel-vba

你能否告诉我以下问题。

我有一个带有VBA的excel工作簿,在运行时应该将仪表板通过电子邮件发送给列表中的电子邮件收件人。

现在宏停止了工作。或者说宏开始工作,但不生成电子邮件: 运行时,它询问是否应该发送电子邮件,但是当选择“是”时没有任何事情发生?! 我能够运行旧版本的工作簿及其宏。由于宏正在使用活动工作表,因此它执行宏并使用当前仪表板发送电子邮件。 但是,当我将代码粘贴到当前工作簿时,它会完全执行。未生成电子邮件。 因此,似乎某些内容已被禁用当前的工作簿。 一位同事在仪表板中做了一些更改 - 添加了行和列,然后调整了VBA中的范围。否则我不知道任何其他变化。

提前谢谢。

请参阅下面的代码:

'Send Bulk Email From Excel Using VBA Code
Sub SendDailyReport()
    'Below Loop can be changed to While Loop or increase the limit (10) if your list has more than 10 mail ids
    Dim SendTo As String
    Dim ToMSg As String
 If MsgBox("Are you sure you want to send this report?", vbYesNo) = vbNo Then Exit Sub
    For I = 2 To 1000
        SendTo = ThisWorkbook.Sheets(1).Cells(I, 1)
        If SendTo <> ñî Then
            ToMSg = ThisWorkbook.Sheets(1).Cells(I, 2)
            Send_Range SendTo, ToMSg
        End If
    Next I
End Sub
Sub Send_Range(SendTo As String, ToMSg As String)


   ' Select the range of cells on the active worksheet.
   ActiveSheet.Range("F4:S46").Select

   ' Show the envelope on the ActiveWorkbook.
   ActiveWorkbook.EnvelopeVisible = True

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

   ' Set the optional introduction field thats adds
   ' some header text to the email body. It also sets
   ' the To and Subject lines. Finally the message
   ' is sent.
   With ActiveSheet.MailEnvelope
      .Introduction = ""
      .Item.To = SendTo
      .Item.Subject = ToMSg
      .Item.Send
   End With

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With

End Sub

1 个答案:

答案 0 :(得分:0)

ToMSg的主题取自此处:

ToMSg = ThisWorkbook.Sheets(1).Cells(I, 2)

因此,它取自工作簿的第一张,而不是ActiveSheet

删除ThisWorkbook.Sheets(1),它应该有效。