Su un foglio creati un elenco di file che corrispondono ai logo dei tuoi clienti; ad esempio da E2 ad E20; se i nomi file non sono autoesplicativi allora nella colonna adiacente scrivi in chiaro a chi appartengono.
Sullo stesso foglio indica ad esempio in A1 il percorso in cui quei file sono presenti; DEVE terminare con "\".
Poi fai tasto dx sul tab col nome del foglio su cui hai inserito queste informazioni, scegli Visualizza codice; ti si apre l' editor delle macro; copia questo codice e inseriscilo nel frame vuoto di dx:
- Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myPath As String, myLogo As String, myDest As String, newLogo As Shape
Dim xPos As Long, yPos As Long, myW As Long, I As Long
'
'NOTA: myPath DEVE TERMINARE con "\"
myPath = "A1" '<< La cella di Foglio1 in cui e' posizionato il "PERCORSO" delle foto
mylist = "E2:E20" '<< L' intervallo di Foglio1 in cui sono presenti i nomi dei File "logo"
myDest = "B2" '<< La cella in cui, su ogni foglio sara' inserito il logo
'
If Application.Intersect(Range(mylist), Target) Is Nothing Then Exit Sub
'
Cancel = True
myLogo = Range(myPath).Value & Target.Value & ".jpg" '***1
'
For I = 1 To Worksheets.Count
With Sheets(I)
On Error Resume Next
.Shapes("Logo_Logo").Delete
On Error GoTo 0
xPos = .Range(myDest).Left 'calcola la posizione left
yPos = .Range(myDest).Top 'calcola la posizione top
myW = .Range(myDest).Width
myh = .Range(myDest).Height
Set newLogo = .Shapes.AddPicture(myLogo, False, True, xPos, yPos, -1, -1)
With newLogo
.Name = "Logo_Logo"
.LockAspectRatio = msoTrue
.Width = myW * 2 '***2 Vedi testo
.Locked = True
End With
End With
Next I
End Sub
Personalizza le istruzioni marcate <<.
Revisiona anche le istruzioni marcate ***
-La ***1 inserisce ".jpg" in coda al nome file; se nel tuo elenco l' estensione e' gia' presene allora elimina la parte
& ".jpg" -La ***2 imposta la larghezza immagine; quella che ho inserito imposta la larghezza del logo pari al doppio della larghezza cella di destinazione, ma e' una scelta arbitraria. Tu puoi cancellare in toto la riga, e allora l' immagine mantiene le dimensioni del file di origine; oppure puoi scegliere una larghezza fissa (es .Width = 200); oppure puoi impostare l' altezza (.Height = xyzz) e avere la larghezza in proporzione.
Operativamente, vai sul foglio in cui hai impostato i parametri e fai doppioclick sulla cella con un nome file; la macro inserira' l' immagine della riga su ogni foglio del tuo file.
Fai sapere se risolvi cosi', ciao.