vba 将单元格范围从 Excel 复制到 Outlook 中的电子邮件正文

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3757381/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 10:48:19  来源:igfitidea点击:

Copy range of cells from Excel to body of email in Outlook

excelvbaoutlookoutlook-vba

提问by user453470

How can I copy a range of cells from Excel to the body of an email in Outlook using VBA?

如何使用 VBA 将一系列单元格从 Excel 复制到 Outlook 中的电子邮件正文?

I just need the content to be a body of the Outlook mail.

我只需要内容是 Outlook 邮件的正文。

回答by JMax

You can find a packaged solution here : http://www.rondebruin.nl/mail/folder1/mail4.htm

您可以在这里找到打包的解决方案:http: //www.rondebruin.nl/mail/folder1/mail4.htm

Sub Mail_Range()
'Working in 2000-2010
    Dim Source As Range
    Dim Dest As Workbook
    Dim wb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim I As Long

    Set Source = Nothing
    On Error Resume Next
    Set Source = Range("A1:K50").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If Source Is Nothing Then
        MsgBox "The source is not a range or the sheet is protected, " & _
               "please correct and try again.", vbOKOnly
        Exit Sub
    End If

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

    Set wb = ActiveWorkbook
    Set Dest = Workbooks.Add(xlWBATWorksheet)

    Source.Copy
    With Dest.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial Paste:=xlPasteValues
        .Cells(1).PasteSpecial Paste:=xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
    End With

    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Range of " & wb.Name & " " _
                 & Format(Now, "dd-mmm-yy h-mm-ss")

    If Val(Application.Version) < 12 Then
        'You use Excel 2000-2003
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        'You use Excel 2007-2010
        FileExtStr = ".xlsx": FileFormatNum = 51
    End If

    With Dest
        .SaveAs TempFilePath & TempFileName & FileExtStr, _
                FileFormat:=FileFormatNum
        On Error Resume Next
        For I = 1 To 3
            .SendMail "[email protected]", _
                      "This is the Subject line"
            If Err.Number = 0 Then Exit For
        Next I
        On Error GoTo 0
        .Close SaveChanges:=False
    End With

    'Delete the file you have send
    Kill TempFilePath & TempFileName & FileExtStr

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

Regards,

问候,

回答by gyzpunk

See hereif it can help you.

看看这里是否可以帮助你。

I was looking for a solution to copy/paste multiple Excel 2007 cells into an Outlook mail body with VBA but neither a direct copy/paste, a MsgBody.HTMLBody = Range.Textor a clipboard (through DataObject) worked. Then I fell on this previous solution and it solves my problem, hope this will help you too :)

我正在寻找一种使用 VBA 将多个 Excel 2007 单元格复制/粘贴到 Outlook 邮件正文中的解决方案,但直接复制/粘贴、aMsgBody.HTMLBody = Range.Text或剪贴板(通过 DataObject)都不起作用。然后我使用了以前的解决方案,它解决了我的问题,希望这对您也有帮助:)

Cheers!

干杯!