Mam kod VBA, którego używam do kopiowania zakresów jako obraz i wklejania ich do wykresu. Czyni to, aby zapisać go w obrazie. Ten kod ma wskaźnik sukcesu równy 70%, a gdy nie działa, podaje błąd "Metoda CopyPicture klasy zakresu nie powiodła się". Nie rozumiem, dlaczego czasami może zadziałać, a czasami nie, biorąc pod uwagę to, że bierze te same dane wejściowe.Metoda klasy CopyPicture nie powiodła się - czasami
Czy ktoś może pomóc?
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
Czy to się nie udaje dla tego samego obrazu/arkusza roboczego, itp.? lub w różnych przypadkach? Jeśli uruchamiasz pętlę wykonując to 100 razy, to działa ona 0 razy w niektórych przypadkach i 100 razy dla innych lub czy uruchamia się pewna liczba pomiędzy, a następnie zatrzymuje się z błędem? – hnk
Nie powiedzie się dla tego samego obrazu i arkusza roboczego.Zapraszam tego Sub w pętli z 6 zdjęć, i gdy się nie powiedzie, może zawieść na dowolnym zdjęciu, niekoniecznie zawsze tym samym. – user3759627
Spróbuj zamknąć główną logikę kodu w 'Application.EnableEvents = False' i' Application.EnableEvents = True'. – hnk