我有一个Excel工作表,其中有几个图表和图像,用作 Jmeter 板。我需要将该区域中的内容保存为图像。我找到了将该区域保存为图像的代码:
Set sht = ActiveWorkbook.Sheets("Graphical Dashboard")
Set strRng = sht.Range("I1:AC124") ' range to be copied
strRng.CopyPicture xlScreen, xlPicture
lWidth = strRng.Width
lHeight = strRng.Height
Set Cht = sht.ChartObjects.Add(Left:=0, Top:=0, Width:=lWidth, Height:=lHeight)
Cht.Activate
Set oCht = Charts.Add
With oCht
.Paste
.Export Filename:=ThisWorkbook.Path & "\SavedRange.jpg", Filtername:="JPG"
End With
Cht.Delete
但是,问题是,尽管它保存了与所选范围的区域相匹配的图像,但该图像是空白。此外,它还添加了另一个名为“图表”的工作表,并将空白图像粘贴到工作表中。
4条答案
按热度按时间djmepvbi1#
正如你提到的,excel文件已经包含了指定范围内的图表,所以没有必要添加图表对象
Set Cht = sht.ChartObjects.Add(Left:=0, Top:=0, Width:=lWidth, Height:=lHeight)
。我已经测试了下面的代码,它正在工作。
如果Excel中没有图表,而你想在VBA中绘制,那么你必须在图表中设置源数据。
.SetSourceData Source:=Sheets("Sheet1").Range("A1:B2")
3okqufwl2#
好吧,做整个事情VBA没有为我工作。因此,我采用了下面的方法。
1.从宏中选择并复制范围。
1.将剪贴板中的内容另存为图像。
qvtsj1bj3#
首先,我选择需要复制的区域并使用方法.CopyPicture,然后如果类型为msoPicture,则从工作簿中清除所有当前图片,然后将图像粘贴到工作表中以将其添加到图表中,然后将复制的图片添加到图表中,导出它,并在完成后删除图表。
mzmfm0qo4#
我做了这个可移植的功能,在任何情况下都可以工作,并且有一些很酷的功能,比如缩放级别和自动保存为文件对话框: