Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [VBA Excel2010] on error che non funziona bene

    buondì a tutti,
    non capisco cosa c'è che non va.. il codice che vi riporta funziona molto bene, carica delle foto in excel.
    il problema nasce quando la foto non esiste dove per la prima che non trova scrive correttamente NA la seconda va in debug il codice in questa istruzione " ActiveSheet.Pictures.Insert" invece dovrebbe andare in errore e scrivere NA..

    Sto usando male il On Error GoTo?
    Qualcuno ha qualche idea?

    codice:
    Sub CaricaFoto()
    Dim i As Variant
    
    On Error GoTo PictureNotAvailable
    Application.DisplayAlerts = False
    
    For e = 4 To Sheets("Aggiorna").Range("C1").Value
    foglio = Sheets("Aggiorna").Range("B" & e).Value
    origine = Sheets("Aggiorna").Range("C" & e).Value
    colonna = Sheets("Aggiorna").Range("D" & e).Value
    
        Sheets(foglio).Select
        ActiveSheet.Range("a1").Select
        
            ' Ciclo tutte le foto del foglio e le cancello
            For Each i In Sheets(foglio).Shapes
                If Left(i.Name, 7) = "Picture" Then i.Delete
            Next i
            
            ' Carico la foto e la ridimensiono con la grandezza della cella
            For Each i In Sheets(foglio).Range(origine)
                'Se il modello ha uno spazio lo cambio con un underscore
                 nomefile = Replace(i.Value, " ", "_")
                'Seleziono la cella
                ActiveSheet.Cells(i.Row, colonna).Select
                'Decido dove mettere la foto
                var_Width = Sheets(foglio).Columns(colonna).ColumnWidth
                var_Height = Sheets(foglio).Cells(i.Row, colonna).Height
                'Carico la foto
                ActiveSheet.Pictures.Insert("\\luxedge1\LuxPicsCache\parts\wip\default\warn\0" & _
                    Mid(i.Value, 2, 2) & "\AUTO_600_600\" & nomefile & ".JPG").Select
                'Ridimensione la foto
                var_Width = Sheets(foglio).Columns(colonna).ColumnWidth
                var_Height = Sheets(foglio).Cells(i.Row, colonna).Height
                Selection.Width = var_Width
                Selection.Height = var_Height
                
                'Aggiungo Hyperlink alla foto
                Sheets(foglio).Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:="\\luxedge1\LuxPicsCache\parts\wip\default\warn\0" & _
                 Mid(i.Value, 2, 2) & "\AUTO_600_600\" & nomefile & ".JPG"
        
    NextPictures:
            Next i
    
        'Posiziono il cursore in testa al foglio
        ActiveSheet.Range("a1").Select
    Next e
    
    'Torno nel foglio principale e avviso che il caricamento è terminato
    Sheets("Aggiorna").Select
    MsgBox ("Caricamento foto terminato!"), vbInformation
    
    Fine_aggiornamento:
    Exit Sub
    
    PictureNotAvailable:
        ActiveSheet.Cells(i.Row, colonna).Value = "N.A."
        GoTo NextPictures
    
    End Sub

  2. #2
    Risolto:
    codice:
    Sub CaricaFoto()
    Dim i As Variant
    
    On Error GoTo PictureNotAvailable
    Application.DisplayAlerts = False
    
    For e = 4 To Sheets("Aggiorna").Range("C1").Value
    foglio = Sheets("Aggiorna").Range("B" & e).Value
    origine = Sheets("Aggiorna").Range("C" & e).Value
    colonna = Sheets("Aggiorna").Range("D" & e).Value
    
        Sheets(foglio).Select
        ActiveSheet.Range("a1").Select
       
            ' Ciclo tutte le foto del foglio e le cancello
            For Each i In Sheets(foglio).Shapes
                If Left(i.Name, 7) = "Picture" Then i.Delete
            Next i
            ' Ciclo tutte le celle e cancello gli NA
            For Each i In Sheets(foglio).Range(origine)
                ActiveSheet.Cells(i.Row, colonna).Value = ""
            Next i
           
            ' Carico la foto e la ridimensiono con la grandezza della cella
            For Each i In Sheets(foglio).Range(origine)
                'Se il modello ha uno spazio lo cambio con un underscore
                 nomefile = Replace(i.Value, " ", "_")
                'Seleziono la cella
                ActiveSheet.Cells(i.Row, colonna).Select
                'Decido dove mettere la foto
                var_Width = Sheets(foglio).Columns(colonna).ColumnWidth
                var_Height = Sheets(foglio).Cells(i.Row, colonna).Height
                'Carico la foto
                ActiveSheet.Pictures.Insert("\\xxxxx\xxxx\xxxx\xxx\xxx\xxx\0" & _
                    Mid(i.Value, 2, 2) & "\AUTO_600_600\" & nomefile & ".JPG").Select
                'Ridimensione la foto
                var_Width = Sheets(foglio).Columns(colonna).ColumnWidth
                var_Height = Sheets(foglio).Cells(i.Row, colonna).Height
                Selection.Width = var_Width
                Selection.Height = var_Height
               
                'Aggiungo Hyperlink alla foto
                Sheets(foglio).Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:="\\luxedge1\LuxPicsCache\parts\wip\default\warn\0" & _
                 Mid(i.Value, 2, 2) & "\AUTO_600_600\" & nomefile & ".JPG"
       
            Next i
           
        'Posiziono il cursore in testa al foglio
        ActiveSheet.Range("a1").Select
    Next e
    
    'Torno nel foglio principale e avviso che il caricamento è terminato
    Sheets("Aggiorna").Select
    MsgBox ("Caricamento foto terminato!"), vbInformation
    
    Exit Sub
    
    PictureNotAvailable:
        ActiveSheet.Cells(i.Row, colonna).Value = "N.A."
        Resume Next
    
    End Sub

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.