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:
- le foto e le miniature sono tutte immagini JPG;
- le foto sono nella directory c:\Foto;
- le miniature sono nella directory c:\Foto\Miniature;
- 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.