Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何复制Excel范围,包括图表和图形,并将其粘贴为单个图像?_Excel_Vba - Fatal编程技术网

如何复制Excel范围,包括图表和图形,并将其粘贴为单个图像?

如何复制Excel范围,包括图表和图形,并将其粘贴为单个图像?,excel,vba,Excel,Vba,使用VBA,我可以将Excel区域作为图像或HTML表格复制并粘贴到outlook。我还可以将单个图表/图形作为图像从Excel复制并粘贴到Outlook中。现在,我有了这个Excel表格,它有多个表格和图表。我希望能够使用VBA将excel工作表中的所有表格和图表作为单个图像复制并粘贴到Outlook中。有办法吗?这就像使用VBA将选定范围内的所有内容(包括叠加在其上的图表)复制到outlook中一样。下面发布的代码行对我很有用。我试着为我的团队每小时发送的报告创建一个自动邮寄器。为了减少他们

使用VBA,我可以将Excel区域作为图像或HTML表格复制并粘贴到outlook。我还可以将单个图表/图形作为图像从Excel复制并粘贴到Outlook中。现在,我有了这个Excel表格,它有多个表格和图表。我希望能够使用VBA将excel工作表中的所有表格和图表作为单个图像复制并粘贴到Outlook中。有办法吗?这就像使用VBA将选定范围内的所有内容(包括叠加在其上的图表)复制到outlook中一样。

下面发布的代码行对我很有用。我试着为我的团队每小时发送的报告创建一个自动邮寄器。为了减少他们在Outlook上运行、复制和粘贴报表的时间,我自动化了报表中涉及的大部分流程。我在stackoverflow上发布的问题是我遇到的问题,谢谢@Levon的编辑。通过在Excel中运行Record宏函数,您可以学到令人难以置信的东西。我在Excel上记录了从范围选择、复制和粘贴到图片的操作,这就是我获得解决问题所需的必要代码的方式

Dim xOutlook As Object, _
    xEmail As Object, _
    xInspector As Object, _
    wEditor As Object, _
    lastRow As Long, _
    pic As Picture

Sheets("Report").Select

lastRow = Cells(Rows.Count, "F").End(xlUp).Row

Range(Cells(1, 6), Cells(lastRow, 23)).Select
Selection.Copy
Sheets("Report").Range("AJ1").Select
Sheets("Report").Pictures.Paste.Select

Set pic = Selection

pic.ShapeRange.LockAspectRatio = msoTrue
pic.ShapeRange.ScaleWidth 0.9, msoTrue
pic.Copy

Set xOutlook = CreateObject("Outlook.Application")
Set xEmail = xOutlook.CreateItem(olMailItem)
Set xInspector = xEmail.GetInspector
Set wEditor = xInspector.WordEditor

With xEmail
    .Display
    .To = ""
    .CC = ""
    .BCC = ""
    .Subject = "Test"
    .Body = "" & vbCrLf
    wEditor.Application.Selection.Start = Len(.Body)
    wEditor.Application.Selection.End = wEditor.Application.Selection.Start
    wEditor.Application.Selection.Paste
    pic.Delete
End With

您正在使用的哪些代码没有按您希望的方式工作?是否选择了范围并使用了Selection.CopyPicture外观:=xlScreen,格式:=xlBitmap?或者,工作表SheetsName,范围A1:J20.CopyPicture外观:=xlScreen,格式:=xlBitmap