Excel adattamento foto a cella
Hai un problema con Excel? 
Excel - adattamento foto a cella
di narsil87 data: 27/01/2017 11:43:48
Buongiorno a tutti,
premetto che sono proprio fresca nell'uso d VBA.
Su internet ho trovato la macro che vi riporto (che funziona benissimo!), per inserire una immagine da una cartella "Foto" su un file contenente un elenco di prodotti: a prodotto collegavo la foto corrispondente e la adattavo alla forma della cella.
La mia domanda però è la seguente: se volessi semplificare?
se io volessi semplicemente creare una macro che mi "sistemasse" la foto che vado a inserire manualmente nel mio file, in modo da adattarla alla dimensione della cella, cosa dovreicambiare?
E se volessi adattare l'immagine a più celle unite?
Vi ringrazio davvero per l'aiuto e scusate per il basso livello di conoscenza di excel
Sub InsImg()
Application.ScreenUpdating = False
ActiveSheet.Shapes.SelectAll
Selection.Delete
mPath = "C:UsersValeriaDesktopNuova cartellaFOTO"
r = 2 ' riga inizio prodotti
Lr = Range("A" & Rows.Count).End(xlUp).Row ' ultima riga da analizzare
For i = r To Lr
mFoto = Cells(i, 1)
If Len(mFoto & "") <> 0 Then ' se c'e' il nome prodotto
If Dir(mPath & "" & mFoto & ".jpg") <> "" Then ' se la foto esiste
' inserisce foto e adatta a dimensioni cella/colonna B
With ActiveSheet.Pictures.Insert(mPath & "" & mFoto & ".jpg")
'NOTA: in blu per centrare la foto nelle celle (puoi ovviamente variare), altrimenti vengono una attaccata all'altra
.Top = Range("B" & i).Top + 2
.Left = Range("B" & i).Left
.Height = Range("B" & i).Height
.Width = Range("B" & i).Width
End With
End If
End If
Next i
Application.ScreenUpdating = True
End Sub |
di patel data: 27/01/2017 12:28:24
tu vorresti inserire manualmente nella cella l'immagine e po tramite macro adattarla alla cella ?
mi sembra una complicazione invece che una semplificazione
di narsil87 data: 27/01/2017 12:32:17
Premetto che non condivido quello che vi sto chiedendo per due motivi:
- non ritengo che excel vada usato come un power point
- come dite voi non è una semplificazione
ma chi mi ha chiesto il file è una persona che non sa quasi usare il pc, figuriamoci excel e voleva solo poter inserire delle immagini vicino al nome del prodotto senza però dover adattare ogni volta l'immagine alla cella...
Grazie in anticipo!
di zsadist data: 27/01/2017 12:39:04
una domanda.. magari sciocca.
se non ho capito male, hai un foglio excel con un elenco di prodotti.. accanto al nome del prodotto, visualizzare l'immagine corrispondente, giusto?
non può essere più utile, chiedo, se in un apposito spazio (che in questo caso puoi definire come dimensioni), apparisse l'immagine del prodotto che selezioni?
di narsil87 data: 27/01/2017 12:42:37
sarebbe bello ma già quando gli ho presentato questa soluzione l'ha trovata complicata perchè dovrebbe salvare le foto in una cartella apposita e nominarle con il nome del prodotto ...!!
So che è pietoso ma è un mio superiore e devo cercare di accontentarlo :(
di zsadist data: 27/01/2017 12:47:05
beh, non cambierebbe nulla su salvataggio dei file..
considera:
le foto non verrebbero caricate sul file excel, rendendolo più "leggero"
essendo articoli, suppongo che abbiano un codice articolo, in elenco, quindi, le foto basta nominarli con il codice..
comunque.., era solo per chiedere.. :)
di narsil87 data: 27/01/2017 12:49:13
se non è un problema allora vi chiederei entrambe le soluzioni....! così propongo le due possibilità! grazie 1000!!!
di zsadist data: 27/01/2017 13:16:27
beh, ok..
guarda, ti metto il codice VBA da riadattare secondo le tue esigenze.. e completandolo :)
'codice da mettere sul foglio (sheets) ove vi sia l'elenco e lo spazio dedicato per la visualizzazione dell'immagine
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False 'Blocco la gestione degli eventi
ind = Target.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Application.EnableEvents = True 'Riattivo la gestione degli eventi
On Error Resume Next 'se errore, prosegui
If Target.Column = 1 And Target.Row > 18 Then GoTo Okrey Else: GoTo NoFoto 'in questo caso, se si seleziona la prima colonna (A) e una riga che vada oltre alla 18, avvio la procedura, altrimenti vado in NoFoto
Okrey:
Percorso = ActiveSheet.Cells(1, 1) 'in A1 metto l'indirizzo completo della cartella contenente le foto
If Range(ind).Value = "" Then GoTo NoFoto
foto = Range(ind).Value & ".jpg"
On Error GoTo NoFoto
Foglio4.Image1.Picture = LoadPicture(Percorso & foto)
Exit Sub
NoFoto: 'in caso di errore o di riga non contenente un riferimento per le foto, visualizzo nulla
Foglio4.Image1.Picture = LoadPicture("")
End Sub |
di zsadist data: 27/01/2017 13:22:27
ah... ti allego un esempio del formato Image1 che ho utilizzato nel codice..
anzi.. ti ho fatto un file di esempio...
di narsil87 data: 27/01/2017 13:55:24
Grazie 1000! speriamo di convincerlo!
di zsadist data: 27/01/2017 14:01:10
ti ho allegato l'esempio con foto..
così magari gli fai vedere una cosa nella pratica..
purtroppo, l'esempio che avevo fatto, comprendeva troppe foto..
ho ridotto il tutto, per fare un file Zip accettabile..
scusami
Vuoi Approfondire?