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

将Excel中的单元格范围复制到Outlook中的电子邮件正文,excel,vba,outlook,Excel,Vba,Outlook,如何使用VBA将Excel中的一系列单元格复制到Outlook中的电子邮件正文中 我只需要将内容作为Outlook邮件的正文。您可以在此处找到打包解决方案: 子邮件范围() “2000-2010年工作 暗光源作为量程 将Dest设置为工作簿 将wb设置为工作簿 Dim TempFilePath作为字符串 将文件名设置为字符串 Dim FileExtStr作为字符串 Dim FileFormatNum尽可能长 我想我会坚持多久 设置源=无 出错时继续下一步 设置源=范围(“A1:K50”)。特殊单

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


我只需要将内容作为Outlook邮件的正文。

您可以在此处找到打包解决方案:

子邮件范围()
“2000-2010年工作
暗光源作为量程
将Dest设置为工作簿
将wb设置为工作簿
Dim TempFilePath作为字符串
将文件名设置为字符串
Dim FileExtStr作为字符串
Dim FileFormatNum尽可能长
我想我会坚持多久
设置源=无
出错时继续下一步
设置源=范围(“A1:K50”)。特殊单元格(xlCellTypeVisible)
错误转到0
如果源什么都不是,那么
MsgBox“源不是范围或工作表受保护,&”_
“请更正并重试。”,仅适用于VBOK
出口接头
如果结束
应用
.ScreenUpdate=False
.EnableEvents=False
以
设置wb=ActiveWorkbook
Set Dest=Workbooks.Add(xlWBATWorksheet)
来源,收到
带目的地表(1)
.单元格(1).粘贴特殊粘贴:=8
.单元格(1).粘贴特殊粘贴:=XLPasteValue
.Cells(1).粘贴特殊粘贴:=xlPasteFormats
.单元格(1)。选择
Application.CutCopyMode=False
以
TempFilePath=Environ$(“temp”)和“\”
TempFileName=“范围”&wb.Name&“_
&格式(现为“dd-mmm-yy h-mm-ss”)
如果Val(Application.Version)<12,则
“您使用的是Excel 2000-2003
FileExtStr=“.xls”:FileFormatNum=-4143
其他的
“您使用的是Excel 2007-2010
FileExtStr=“.xlsx”:FileFormatNum=51
如果结束
带Dest
.SaveAs TempFilePath&TempFileName&FileExtStr_
FileFormat:=FileFormatNum
出错时继续下一步
对于I=1到3
.SendMail“ron@debruin.nl", _
“这是主题行”
如果Err.Number=0,则退出
接下来我
错误转到0
.Close SaveChanges:=False
以
'删除已发送的文件
终止TempFilePath&TempFileName&FileExtStr
应用
.ScreenUpdate=True
.EnableEvents=True
以
端接头

关于,

您可以在此处找到打包解决方案:

子邮件范围()
“2000-2010年工作
暗光源作为量程
将Dest设置为工作簿
将wb设置为工作簿
Dim TempFilePath作为字符串
将文件名设置为字符串
Dim FileExtStr作为字符串
Dim FileFormatNum尽可能长
我想我会坚持多久
设置源=无
出错时继续下一步
设置源=范围(“A1:K50”)。特殊单元格(xlCellTypeVisible)
错误转到0
如果源什么都不是,那么
MsgBox“源不是范围或工作表受保护,&”_
“请更正并重试。”,仅适用于VBOK
出口接头
如果结束
应用
.ScreenUpdate=False
.EnableEvents=False
以
设置wb=ActiveWorkbook
Set Dest=Workbooks.Add(xlWBATWorksheet)
来源,收到
带目的地表(1)
.单元格(1).粘贴特殊粘贴:=8
.单元格(1).粘贴特殊粘贴:=XLPasteValue
.Cells(1).粘贴特殊粘贴:=xlPasteFormats
.单元格(1)。选择
Application.CutCopyMode=False
以
TempFilePath=Environ$(“temp”)和“\”
TempFileName=“范围”&wb.Name&“_
&格式(现为“dd-mmm-yy h-mm-ss”)
如果Val(Application.Version)<12,则
“您使用的是Excel 2000-2003
FileExtStr=“.xls”:FileFormatNum=-4143
其他的
“您使用的是Excel 2007-2010
FileExtStr=“.xlsx”:FileFormatNum=51
如果结束
带Dest
.SaveAs TempFilePath&TempFileName&FileExtStr_
FileFormat:=FileFormatNum
出错时继续下一步
对于I=1到3
.SendMail“ron@debruin.nl", _
“这是主题行”
如果Err.Number=0,则退出
接下来我
错误转到0
.Close SaveChanges:=False
以
'删除已发送的文件
终止TempFilePath&TempFileName&FileExtStr
应用
.ScreenUpdate=True
.EnableEvents=True
以
端接头
问候,

看看它是否能帮助您

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

干杯

看看它是否能帮助你

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

干杯

这回答了问题:这回答了问题:
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 "ron@debruin.nl", _
                      "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