Come creare un catalogo delle foto contenute in una cartella

Giulio sta creando un catalogo di tutte le sue foto digitali in Excel. Tutte le foto (circa 5000) sono in un’unica cartella. Vorrebbe inserire le foto a destra della descrizione della foto, quindi inserire un collegamento ipertestuale a tutte le foto per ingrandire la miniatura in una foto più grande. In questo momento Giulio lo sta facendo una per una e questo lo sta facendo impazzire, quindi sta cercando modi per accelerare il processo.

La buona notizia è che non devi impazzire così velocemente; Excel fornisce macro che possono rendere il lavoro più semplice e veloce. Prima di approfondire, tuttavia, potresti voler pensare a lungo e intensamente prima di inserire tutte le tue foto in una cartella di lavoro di Excel.

Quando inserisci una foto in Excel, la dimensione del file della cartella di lavoro viene aumentata almeno della dimensione del file della foto inserita. Pertanto, se la tua foto media ha una dimensione di 1 MB (abbastanza piccola con le fotocamere odierne) e inserisci 5000 foto di questo tipo, ti ritroverai con una cartella di lavoro che contiene almeno 5 GB di foto. Si tratta di una cartella di lavoro enorme ed Excel potrebbe avere difficoltà a lavorare con così tante informazioni (il tempo necessario dipende dalla versione di Excel, dalla quantità di memoria presente nel sistema, dalla velocità del processore, ecc.).

Potresti pensare che la soluzione sia ridimensionare le immagini man mano che le inserisci nel foglio di lavoro, in modo che siano più piccole. Sebbene il ridimensionamento di un’immagine la faccia apparire più piccola (sembra più piccola nel foglio di lavoro), in realtà non è più piccola. L’immagine a dimensione intera è ancora lì in Excel. Pertanto, non riduci affatto le dimensioni del file della cartella di lavoro ridimensionando le foto.

Il modo per ridurre le dimensioni del file è ridimensionare le foto al di fuori di Excel, utilizzando un software di fotoritocco, prima che vengano inserite in Excel. In altre parole, dovresti caricare ciascuna foto nel software di fotoritocco, ridimensionare le foto alla dimensione di anteprima desiderata, quindi salvare la foto ridimensionata in un nuovo file di immagine in miniatura (in genere non vorrai salvare l’immagine ridimensionata sopra la foto originale). Potresti quindi inserire ciascuna miniatura nel tuo foglio di lavoro Excel e la dimensione del file della cartella di lavoro risultante sarebbe più piccola, anche se ancora direttamente correlata alla dimensione aggregata delle foto in miniatura aggiunte al foglio di lavoro.

Se desideri comunque inserire tutte le foto nel tuo foglio di lavoro, puoi farlo utilizzando una macro. L’esempio seguente, PhotoCatalog, può cercare tutte le foto in miniatura e inserirle nel foglio di lavoro, insieme a un collegamento ipertestuale alla foto completa. Si presuppongono quattro cose:

  1. le foto e le miniature sono tutte immagini JPG;
  2. le foto sono nella directory c:\Foto;
  3. le miniature sono nella directory c:\Foto\Miniature;
  4. le miniature hanno gli stessi nomi di file delle foto a grandezza naturale.

 

 

Sub PhotoCatalog()
    Dim i As Double
    Dim xPhoto As String
    Dim sLocT As String
    Dim sLocP As String
    Dim sPattern As String

    sLocT = "c:\Foto\Miniature\"
    sLocP = "c:\Foto\"
    sPattern = sLocT & "*.jpg"

    Application.EnableEvents = False
    Application.ScreenUpdating = False

    Range("A1").FormulaR1C1 = "Descrizione"
    Range("B1").FormulaR1C1 = "Miniatura"
    Range("C1").FormulaR1C1 = "Collegamento"
    Range("A1:C1").Select
    With Selection.Font
        .Name = "Arial"
        .FontStyle = "Bold"
        .Size = 12
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With

    i = 1
    On Error GoTo 0
    xPhoto = Dir(sPattern, vbNormal)
    Do While xPhoto <> ""
        i = i + 1
        Range("B" & i).Select
        ActiveSheet.Pictures.Insert(sLocT & xPhoto).Select
        With Selection.ShapeRange
            .LockAspectRatio = msoTrue
            .Height = 54#
            .PictureFormat.Brightness = 0.5
            .PictureFormat.Contrast = 0.5
            .PictureFormat.ColorType = msoPictureAutomatic
        End With
        Range("C" & i).Select
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, _
          Address:=sLocP & xPhoto, TextToDisplay:=xPhoto
        xPhoto = Dir
    Loop

    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

 

 

L’esecuzione di questa macro può richiedere parecchio tempo, a seconda del tipo di sistema che stai utilizzando e di quante foto stai catalogando.

 

 

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Ti è stato utile?