范围类的CopyPicture方法失败 - 有时

use*_*627 9 excel charts vba copy-paste

我有一个VBA代码,我用它来将范围复制为图片并将其粘贴到图表中.它这样做,所以我可以将它保存到图片中.此代码具有70%的成功率,当它不起作用时,它会发出错误"范围类的CopyPicture方法失败".我不明白为什么它有时可以工作,有时并没有给出它采取相同的输入.

有人可以帮忙吗?

Public Sub ExportRange(workbookPath As String, sheetName As String, rangeString As String, savepath As String)

    Set tempWorkBook = Workbooks.Open(workbookPath)

    Dim selectRange As range
    Set selectRange = Worksheets(sheetName).range(rangeString)
    Dim numRows As Long
    numRows = selectRange.Rows.Count
    Dim numCols As Long
    numCols = selectRange.Columns.Count

    ' Transfer selection to a new sheet and autofit the columns
    selectRange.Copy
    Dim tempSheet As Worksheet
    Set tempSheet = Sheets.Add
    tempSheet.range("A1").PasteSpecial xlPasteAll

    ActiveSheet.UsedRange.Columns.AutoFit
    Set selectRange = ActiveSheet.UsedRange
    selectRange.Select
    selectRange.CopyPicture xlScreen, xlPicture

    Dim tempSheet2 As Worksheet
    Set tempSheet2 = Sheets.Add
    Dim oChtobj As Excel.ChartObject
    Set oChtobj = tempSheet2.ChartObjects.Add( _
        selectRange.Left, selectRange.Top, selectRange.Width, selectRange.Height)

    Dim oCht As Excel.Chart
    Set oCht = oChtobj.Chart
    oCht.Paste
    oCht.Export filename:=savepath
    oChtobj.Delete

    Application.DisplayAlerts = False
    tempSheet.Delete
    tempSheet2.Delete
    tempWorkBook.Close
    Application.DisplayAlerts = True

End Sub
Run Code Online (Sandbox Code Playgroud)

Ido*_*nts 0

对我来说,我遇到了类似的问题,我可以通过在xlScreenxlPrinterin之间进行更改来解决它selectRange.CopyPicture

我希望这有帮助