Ошибка времени выполнения Excel VBA -2147221040 при использовании Shape.Copy - PullRequest
0 голосов
/ 27 сентября 2018

Я экспериментирую с некоторым кодом, найденным здесь (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'):

Сбой метода «Копирование» объекта «Форма»

Однако, если я выберу отладку, а затем либо шаг за шагом, либо продолжу работать без перерыва, она будет работать. Что вызывает эту ошибку, когда я пытаюсь ее запустить, а не когда я прохожу через нее?

...