我正在试验这里找到的一些代码(
https://analystcave.com/excel-image-vba-save-range-workbook-image/
)它获取选定的区域,复制/粘贴为图片,复制将图片粘贴为图表,复制/粘贴为图片的图表区域并将其保存为JPG。此处编码:
Sub SelectedRangeToImage()
Dim tmpChart As Chart, n As Long, shCount As Long, sht As Worksheet, sh As Shape
Dim fileSaveName As Variant, pic As Variant
'Create temporary chart as canvas
Set sht = Selection.Worksheet
Selection.Copy
sht.Pictures.Paste.Select
Set sh = sht.Shapes(sht.Shapes.Count)
Set tmpChart = Charts.Add
tmpChart.ChartArea.Clear
tmpChart.Name = "PicChart" & (Rnd() * 10000)
Set tmpChart = tmpChart.Location(Where:=xlLocationAsObject, Name:=sht.Name)
tmpChart.ChartArea.Width = sh.Width
tmpChart.ChartArea.Height = sh.Height
tmpChart.Parent.Border.LineStyle = 0
'Paste range as image to chart
sh.Copy
tmpChart.ChartArea.Select
tmpChart.Paste
'Save chart image to file
fileSaveName = Application.GetSaveAsFilename(fileFilter:="Image (*.jpg), *.jpg")
If fileSaveName <> False Then
tmpChart.Export Filename:=fileSaveName, FilterName:="jpg"
End If
'Clean up
sht.Cells(1, 1).Activate
sht.ChartObjects(sht.ChartObjects.Count).Delete
sh.Delete
End Sub
当我使用调试器单步执行代码时,代码工作得很好,但是当我试图运行整个宏时,它在第行弹出以下错误
sh.Copy
:
运行时错误_-2147221040(800401d0_):
对象形状的方法复制失败
但是,如果我选择调试,然后单步执行或者继续不间断地从那里运行,它将工作。当我尝试运行此错误,但当我单步执行它时却没有,是什么导致了此错误?