Ho un codice VBA che sto usando per copiare intervalli come immagine e incollarli in un grafico. Lo fa così posso salvarlo in un'immagine. Questo codice ha una percentuale di successo del 70% e, quando non funziona, emette l'errore "Metodo CopyPicture della classe intervallo fallito". Non capisco perché a volte può funzionare e, a volte, non significa che stia prendendo gli stessi input.Metodo CopyPicture della classe intervallo non riuscito - a volte
Qualcuno può aiutare?
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
Non riesce per la stessa immagine/foglio di lavoro, ecc. o in casi diversi? Come se si eseguisse un ciclo eseguendolo 100 volte, viene eseguito 0 volte in alcuni casi e 100 volte per gli altri o esegue qualche numero intermedio e poi si interrompe con l'errore? – hnk
Fallisce per la stessa immagine e foglio di lavoro. Eseguo questo sottotitolo in un ciclo con 6 immagini, e quando fallisce, può fallire su una qualsiasi delle immagini, non necessariamente sempre la stessa. – user3759627
Prova a racchiudere la logica del codice principale in 'Application.EnableEvents = False' e' Application.EnableEvents = True' – hnk