Я экспериментирую с некоторым кодом, найденным здесь (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'):
Сбой метода «Копирование» объекта «Форма»
Однако, если я выберу отладку, а затем либо шаг за шагом, либо продолжу работать без перерыва, она будет работать. Что вызывает эту ошибку, когда я пытаюсь ее запустить, а не когда я прохожу через нее?