【问题标题】:Excel Macro send emailExcel 宏发送电子邮件
【发布时间】:2010-10-14 16:08:28
【问题描述】:

我想通过 Excel 发送一份报告。 它将包括收件人、主题和正文中的信息。实际上它可以复制有问题的单元格。 到目前为止我所做的是创建一个按钮并使用以下代码为其分配一个宏:

Private Sub CommandButton1_Click()
 Application.Dialogs(xlDialogSendMail).Show arg1:=Sheets("Sheet1").Range("E3"), _
                      arg2:=Sheets("Sheet1").Range("E7")

End Sub

问题在于此命令将工作簿作为附件发送。

谁能帮我写出允许我这样做的代码。

感谢一百万!

干杯

【问题讨论】:

    标签: email excel vba


    【解决方案1】:

    添加对outlook com库的引用;然后您可以复制/粘贴值并格式化您需要的新工作表,然后将其复制到 Outlook 邮件中。

    【讨论】:

      【解决方案2】:

      设置对“Microsoft Outlook xx.x 对象库”的引用,您可以将此代码用作构建或发送电子邮件的示例:

      因为它只会显示电子邮件而不发送。您可以注释掉 .display 行并取消注释 .send 以发送它。

      Sub EmailFromExcel()
          On Error GoTo PROC_EXIT
          Dim OL As New Outlook.Application
      
          Dim olMail As Outlook.MailItem
          Set olMail = OL.CreateItem(olMailItem)
      
          Dim SrcSheet As Excel.Worksheet
          Set SrcSheet = Sheets("Sheet1")
      
          With olMail
              .To = SrcSheet.Range("E3").Text
              .Subject = SrcSheet.Range("E7").Text
              .Body = SrcSheet.Range("E12").Text
              .Display vbModal
              '.Send
          End With
      
       PROC_EXIT:
          On Error GoTo 0
          OL.Quit
          Set OL = Nothing
      End Sub
      

      【讨论】:

      • 这很好用,但我更喜欢没有 OL.Quit,如果它是打开的,它会关闭用户的 Outlook。
      • @HeadofCatering 我更喜欢没有Dim ... As New 符号。否则它似乎运作良好。
      • 确保正确实例化 Outlook 完全取决于您,方法是使用 GetObject 或其他方法检查它是否已打开。此代码的说明性部分只是将 Excel 值放入 Outlook 电子邮件中。
      猜你喜欢
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      相关资源
      最近更新 更多