Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[excel] associare ad un nome, un immagine in automatico

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: [excel] associare ad un nome, un immagine in automatico

Postdi Flash30005 » 08/01/12 15:33

L'argomento di posizionamento immagini e loro dimensione è già stato ampiamente trattato e risolto in questo topic, leggi e prova, in caso di problemi posta ancora

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: [excel] associare ad un nome, un immagine in automatico

Postdi enricom » 09/01/12 11:34

Grazie mi sei stato di grande aiuto. Il file presente sul Topic era proprio quello che mi serviva, solo su una cosa ho difficoltà. Mi spiego, invece di digitare il nome dell'immagine da caricare vorrei inserire una formula nella cella che faccia tutto automaticamente, ho provato per es. ad inserire =SE(A1=1;"immagine1";"immagine2"), effettivamente nella cella in cui ho iserito questa formula cambia il testo in base al valore inserito in A1, ma non l'immagine che cambia solo se ci clicco dentro e poi premo invio, come si può fare.....
enricom
Utente Junior
 
Post: 13
Iscritto il: 07/01/12 14:52

Re: [excel] associare ad un nome, un immagine in automatico

Postdi Flash30005 » 09/01/12 14:05

Perché in effetti tu hai una variazione nella cella A1 che comporta un cambiamento nella cella B1 (immagine) che non viene rilevato quindi devi inserire nel Vba del foglio il controllo al cambiamento della cella A1
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then GoTo salta
'macro esistente o chiamata alla macro
salta:
'altro eventuale codice
End Sub


Fai sapere se tutto ok

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel] associare ad un nome, un immagine in automatico

Postdi enricom » 09/01/12 19:18

Non ci riesco, questo e il VBA del foglio:

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range) 'By Lanfre + PcFAcile
'
ListaF = Sheets("Parametri").Range("B2").Value   '<<< Le celle con nome immagine
StdDir = Sheets("Parametri").Range("B3").Value: If Right(StdDir, 1) <> "\" Then StdDir = StdDir & "\"
DefPic = Sheets("Parametri").Range("B4").Value    'Dir e filename da usare in mancanza di foto
Jolly = Sheets("Parametri").Range("B5").Value   'Per decidere a quante colonne a destra
Alto = Sheets("Parametri").Range("B7").Value 'Altezza immagine e colonna
Largo = Sheets("Parametri").Range("B8").Value 'Larghezza immagine e colonna
Columns(Jolly + 1).ColumnWidth = (Largo) / 5.7 '* Da rivedere...
Rows.RowHeight = (Alto) + 4
For Each CELLA In Target
  If Not Application.Intersect(CELLA, Range(ListaF)) Is Nothing Then
    On Error Resume Next
    ActiveSheet.Shapes("FOTO_DA_" & CELLA.Address(0, 0)).Delete
    On Error GoTo 0
    CELLA.Select
    If (CELLA.Text <> "") Then
        If Dir(StdDir & CELLA.Text & ".jpg") = "" Then
            ActiveSheet.Pictures.Insert(DefPic).Select
        Else
            ActiveSheet.Pictures.Insert(StdDir & CELLA.Text & ".jpg").Select
        End If
        Selection.Name = "FOTO_DA_" & CELLA.Address(0, 0)
        Selection.ShapeRange.Height = (Alto)
        If Selection.ShapeRange.Width > (Largo) Then
            Selection.ShapeRange.Width = (Largo)
        End If
   
        'PER POSIZIONARE L'IMMAGINE AL CENTRO DELLA CELLA CHE HO DECISO:
        Selection.ShapeRange.Left = CELLA.Offset(0, (Jolly)).Left - Selection.ShapeRange.Width / 2 + CELLA.Offset(0, (Jolly)).Width / 2
        Selection.ShapeRange.Top = CELLA.Offset(0, 0).Top - Selection.ShapeRange.Height / 2 + CELLA.Offset(0, (Jolly)).Height / 2
    End If
    CELLA.Select
  End If
Next CELLA
End Sub


mi potresti fare un esempio più specifico, non conosco VBA, facciamo che per A2 dipende da A1, A3 da B1 e A4 da C1.
Questo è il codice del modulo per specificare il codice della macro se ho capito:


Codice: Seleziona tutto
Sub INSERISCE_TUTTE_LE_IMMAGINI()
'Crea le immagini come da lista presente nel range ListaF
ListaF = Sheets("Parametri").Range("B2").Value   '<<< Le celle con nome immagine
Application.GoTo (ActiveWorkbook.Sheets("IMMAGINI").Range("A1"))
For Each CELLA In Sheets("IMMAGINI").Range(ListaF)
    OldV = CELLA.Value
    CELLA.ClearContents: CELLA.Value = OldV
   
Next CELLA
End Sub

Sub CANCELLA_TUTTE_LE_IMMAGINI()
Cancel = Sheets("Parametri").Range("B6").Value   'Per decidere a quante colonne a destra cancellare
For Each pict In Sheets("IMMAGINI").Shapes
    If pict.TopLeftCell.Column = Cancel Then pict.Delete
    'pict.Delete 'SE VOGLIO CANCELLARE TUTTE LE IMMAGINI DAL FOGLIO METTERE APICE SU RIGA SOPRA E TOGLIERE DA PICT.DELETE
Next pict
End Sub

Sub INSERISCI_CARTELLA_IMMAGINI()
Application.GoTo (ActiveWorkbook.Sheets("Parametri").Range("B3"))
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Show
    If .SelectedItems.count = 0 Then
         MsgBox ("Nessuna voce selezionata, procedura annullata")
         GoTo Esci
         End If

    ActiveCell.Value = .SelectedItems.Item(1)
  End With
Esci:
End Sub

Sub INSERISCI_IMMAGINE_NON_DISPONIBILE()
Application.GoTo (ActiveWorkbook.Sheets("Parametri").Range("B4"))
  With Application.FileDialog(msoFileDialogFilePicker)
    .Show
    If .SelectedItems.count = 0 Then
    MsgBox ("Nessuna voce selezionata, procedura annullata")
    GoTo Esci
    End If
    ActiveCell.Value = .SelectedItems.Item(1)
  End With
Esci:
End Sub

Sub DeleteAllVBACode()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
       
Set VBProj = ActiveWorkbook.VBProject
       
For Each VBComp In VBProj.VBComponents
    If VBComp.Type = vbext_ct_Document Then
        Set CodeMod = VBComp.CodeModule
        With CodeMod
          .DeleteLines 1, .CountOfLines
        End With

    Else
        VBProj.VBComponents.Remove VBComp
    End If
Next VBComp

End Sub

Sub removeAllCode()
    Dim awi 'activeWorkbookItem(index)
    Dim awcl As Integer 'activeWorkbook Component CountOfLines
    Dim count As Integer 'how many potential code modules
    Dim i As Integer 'loop counter
   
    On Error Resume Next

    count = ActiveWorkbook.VBProject.VBComponents.count

    For i = 1 To count
        Set awi = ActiveWorkbook.VBProject.VBComponents.Item(i)
        awcl = awi.CodeModule.CountOfLines
        awi.CodeModule.DeleteLines 1, awcl
    Next i
   
    Set awi = Nothing ' Release the object
End Sub



Sub ESPORTA()

    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
TryAgain:
    With Application.FileDialog(msoFileDialogSaveAs)
        .Show
        Flname = .SelectedItems.Item(1)
    End With
    If Flname <> "" Then
        Set NewWkbk = Workbooks.Add
        ThisWorkbook.Sheets(2).Copy Before:=NewWkbk.Sheets(1)
        removeAllCode 'DeleteAllVBACode
        NewWkbk.SaveAs Flname
        If Err.Number = 1004 Then
            NewWkbk.Close
            MsgBox "File Name Not Valid" & vbCrLf & vbCrLf & "Try Again."
            GoTo TryAgain
        End If
        'ActiveWorkbook.Close
    End If

End Sub


Scusa ma non ci capisco tanto, riesco solo ad inserire parametri diversi in un foglio funzionante per adesso appena provo a scrivere non mi trovo più............
enricom
Utente Junior
 
Post: 13
Iscritto il: 07/01/12 14:52

Re: [excel] associare ad un nome, un immagine in automatico

Postdi Flash30005 » 10/01/12 00:58

Non capisco la macro che hai postato rispetto alla tua richiesta esempio ultima postata
enricom ha scritto:facciamo che per A2 dipende da A1, A3 da B1 e A4 da C1.


E ti indico, invece, come fare per far cambiare l'immagine ad ogni cambiamento della cella A1
enricom ha scritto:ho provato per es. ad inserire =SE(A1=1;"immagine1";"immagine2"),

Lascia la formula così e inserisci una sola riga nel Vba del foglio

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range) 'By Lanfre + PcFAcile
'
If Target.Address <> "$A$1" Then Exit Sub  '<<<<<<<<<<<<<< aggiungi questa riga qui, o copia tutta questa macro

ListaF = Sheets("Parametri").Range("B2").Value   '<<< Le celle con nome immagine
StdDir = Sheets("Parametri").Range("B3").Value: If Right(StdDir, 1) <> "\" Then StdDir = StdDir & "\"
DefPic = Sheets("Parametri").Range("B4").Value    'Dir e filename da usare in mancanza di foto
Jolly = Sheets("Parametri").Range("B5").Value   'Per decidere a quante colonne a destra
Alto = Sheets("Parametri").Range("B7").Value 'Altezza immagine e colonna
Largo = Sheets("Parametri").Range("B8").Value 'Larghezza immagine e colonna
Columns(Jolly + 1).ColumnWidth = (Largo) / 5.7 '* Da rivedere...
Rows.RowHeight = (Alto) + 4
For Each CELLA In Target
  If Not Application.Intersect(CELLA, Range(ListaF)) Is Nothing Then
    On Error Resume Next
    ActiveSheet.Shapes("FOTO_DA_" & CELLA.Address(0, 0)).Delete
    On Error GoTo 0
    CELLA.Select
    If (CELLA.Text <> "") Then
        If Dir(StdDir & CELLA.Text & ".jpg") = "" Then
            ActiveSheet.Pictures.Insert(DefPic).Select
        Else
            ActiveSheet.Pictures.Insert(StdDir & CELLA.Text & ".jpg").Select
        End If
        Selection.Name = "FOTO_DA_" & CELLA.Address(0, 0)
        Selection.ShapeRange.Height = (Alto)
        If Selection.ShapeRange.Width > (Largo) Then
            Selection.ShapeRange.Width = (Largo)
        End If
   
        'PER POSIZIONARE L'IMMAGINE AL CENTRO DELLA CELLA CHE HO DECISO:
        Selection.ShapeRange.Left = CELLA.Offset(0, (Jolly)).Left - Selection.ShapeRange.Width / 2 + CELLA.Offset(0, (Jolly)).Width / 2
        Selection.ShapeRange.Top = CELLA.Offset(0, 0).Top - Selection.ShapeRange.Height / 2 + CELLA.Offset(0, (Jolly)).Height / 2
    End If
    CELLA.Select
  End If
Next CELLA
End Sub
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel] associare ad un nome, un immagine in automatico

Postdi enricom » 10/01/12 10:47

Non mi funziona.....ho copiato la macro e ho iserito in A2 la formula =SE(A1=1;"immagine1";"immagine2"), a questo punto se cambio il valore ad A1 cambia il testo in A2 ma non compare l'immagine??????

Non capisco la macro che hai postato rispetto alla tua richiesta esempio ultima postata

enricom ha scritto:facciamo che per A2 dipende da A1, A3 da B1 e A4 da C1.


ti spiego il perchè, visto che nei parametri posso impostare un range di celle in cui inserisco le immagini (per es. A2:A6) voglio fare in modo che l'immagine presente in A2 dipenda dal valore di A1, l'immagine in A3 dipenda da B1,......
Può darsi che mi sbaglio ma credo che se faccio come dici tu le immagini presenti nel range A2:A6 dipendano tutte dal valore di A1.

Grazie della pazienza mi sei di grande aiuto.
Ciao
enricom
Utente Junior
 
Post: 13
Iscritto il: 07/01/12 14:52

Re: [excel] associare ad un nome, un immagine in automatico

Postdi Flash30005 » 10/01/12 16:11

Io ti ho fatto solo un esempio
perché non sono entrato nel merito dell'intera macro che tu dicevi funzionava
e chiaramente modificando A1 e adottando quella formula in A2
avrai la variazione dell'immagine solo in A2
Ora possiamo implementare le celle da controllare ma devi dirmi quante e quali sono,
A1, B1, C1 e basta?
ma se come dici hai le immagini da A2 a A6
hai in totale 5 immagini mentre i controlli sono solo tre :roll: (?)

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel] associare ad un nome, un immagine in automatico

Postdi enricom » 10/01/12 17:15

la macro funziona l'ho provata, non ha più funzionato quando ho inserito la formula nella cella A2 "=SE(A1=1;"immagine1";"immagine2")", e neppure quando ho inserito:
Codice: Seleziona tutto
If Target.Address <> "$A$1" Then Exit Sub  '<<<<<<<<<<<<<< aggiungi questa riga qui, o copia tutta questa macro

Facciamo che le immagini vanno nelle celle A2:A6, i controlli A1, B1, C1, D1, E1

Grazie!!!
enricom
Utente Junior
 
Post: 13
Iscritto il: 07/01/12 14:52

Re: [excel] associare ad un nome, un immagine in automatico

Postdi enricom » 10/01/12 17:18

Per essere più chiaro A1 controlla A2, B1 controlla A3, C1 controlla A4, D1 controlla A5, E1 controlla A6

Ciao
enricom
Utente Junior
 
Post: 13
Iscritto il: 07/01/12 14:52

Re: [excel] associare ad un nome, un immagine in automatico

Postdi Flash30005 » 11/01/12 15:25

Ok
Allora nel VBA del foglio IMMAGINI
Inserisci questo codice
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range) 'By Lanfre + PcFAcile
If Not Application.Intersect(Target, Range("A1:E1")) Is Nothing Then
Cella = Target.Column + 1
Foto = "A" & Cella
Call InsAutomatico
End If
End Sub

Nel modulo1 (o altro modulo)
inserisci questo codice
Codice: Seleziona tutto
Public Foto
Sub InsAutomatico()
ListaF = Sheets("Parametri").Range("B2").Value   '<<< Le celle con nome immagine
StdDir = Sheets("Parametri").Range("B3").Value: If Right(StdDir, 1) <> "\" Then StdDir = StdDir & "\"
DefPic = Sheets("Parametri").Range("B4").Value    'Dir e filename da usare in mancanza di foto
Jolly = Sheets("Parametri").Range("B5").Value   'Per decidere a quante colonne a destra
Alto = Sheets("Parametri").Range("B7").Value 'Altezza immagine e colonna
Largo = Sheets("Parametri").Range("B8").Value 'Larghezza immagine e colonna
Columns(Jolly + 1).ColumnWidth = (Largo) / 5.7 '* Da rivedere...
Rows.RowHeight = (Alto) + 4



    On Error Resume Next
    ActiveSheet.Shapes("FOTO_DA_" & Foto).Delete
    On Error GoTo 0
    Range(Foto).Select
    If (Range(Foto).Text <> "") Then
        If Dir(StdDir & Range(Foto).Text & ".bmp") = "" Then
            ActiveSheet.Pictures.Insert(DefPic).Select
        Else
            ActiveSheet.Pictures.Insert(StdDir & Range(Foto).Text & ".bmp").Select
        End If
        Selection.Name = "FOTO_DA_" & Foto
        Selection.ShapeRange.Height = (Alto)
        If Selection.ShapeRange.Width > (Largo) Then
            Selection.ShapeRange.Width = (Largo)
        End If
   
        'PER POSIZIONARE L'IMMAGINE AL CENTRO DELLA CELLA CHE HO DECISO:
        Selection.ShapeRange.Left = Range(Foto).Offset(0, (Jolly)).Left - Selection.ShapeRange.Width / 2 + Range(Foto).Offset(0, (Jolly)).Width / 2
        Selection.ShapeRange.Top = Range(Foto).Offset(0, 0).Top - Selection.ShapeRange.Height / 2 + Range(Foto).Offset(0, (Jolly)).Height / 2
    End If
    Range(Foto).Select

End Sub


Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel] associare ad un nome, un immagine in automatico

Postdi enricom » 11/01/12 21:27

Ci ho dato uno sguardo veloce perchè non ho avuto molto tempo per soffermarmi come vorrei (lo farò sicuramente in questi giorni), ma per quello che ho visto mi sembra semplicemente: PERFETTO!!!
Grazie mille.
enricom
Utente Junior
 
Post: 13
Iscritto il: 07/01/12 14:52

Re: [excel] associare ad un nome, un immagine in automatico

Postdi ahidai » 11/01/12 22:07

enricom ha scritto:Ci ho dato uno sguardo veloce perchè non ho avuto molto tempo per soffermarmi come vorrei (lo farò sicuramente in questi giorni), ma per quello che ho visto mi sembra semplicemente: PERFETTO!!!
Grazie mille.

Un saluto a tutti.....
Ciao enricom, volevo chiederti la macro che è stata sviluppata ti serve per aggiornare una classica di calcio o altre classifiche, cioè associare un'immagine con un nome di una squadra in modo che cambiando posizione in classifica cambia anche l'immagine.
Non so se mi sono spiegato, comunque se fosse così, la cosa mi interessa e ti chiedo gentilmente se puoi postare il file anche in MP.
Ciao.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [excel] associare ad un nome, un immagine in automatico

Postdi enricom » 11/01/12 22:32

Non l'ho fatto con quest'intento, ma credo che potrai adattarlo sicuramente.......
Appena ho un pò di tempo ti mando il file.
Ciao
enricom
Utente Junior
 
Post: 13
Iscritto il: 07/01/12 14:52

Re: [excel] associare ad un nome, un immagine in automatico

Postdi ahidai » 12/01/12 10:13

enricom ha scritto:Non l'ho fatto con quest'intento, ma credo che potrai adattarlo sicuramente.......
Appena ho un pò di tempo ti mando il file.
Ciao

Grazie enricom per la risposta, attendo il file con ansia.... mi faresti veramente un favore.
Ciao e buona giornata....
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [excel] associare ad un nome, un immagine in automatico

Postdi ahidai » 12/01/12 18:09

ahidai ha scritto:
enricom ha scritto:Non l'ho fatto con quest'intento, ma credo che potrai adattarlo sicuramente.......
Appena ho un pò di tempo ti mando il file.
Ciao

Grazie enricom per la risposta, e per il file. Ciao e buona giornata....
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [excel] associare ad un nome, un immagine in automatico

Postdi enricom » 13/01/12 16:16

Allora come è andata?
Sei riuscito ad adattare la macro?
enricom
Utente Junior
 
Post: 13
Iscritto il: 07/01/12 14:52

Re: [excel] associare ad un nome, un immagine in automatico

Postdi ahidai » 14/01/12 20:54

enricom ha scritto:Allora come è andata?
Sei riuscito ad adattare la macro?


Ciao enricom, grazie ancora per il file, non ho avuto tempo di provare, spero che domani mia moglie mi lascia un pò di tempo libero :D
Ciao e buona domenica.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [excel] associare ad un nome, un immagine in automatico

Postdi contiend » 01/12/13 08:51

E' già stato spiegato il metodo " anagrafe " ? :P

Anthony47 ha scritto:sono gia' sul file excel, magari in un altro foglio in forma di "anagrafe" che incrocia parole e immagini".
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 145
Iscritto il: 20/04/09 17:45

Re: [excel] associare ad un nome, un immagine in automatico

Postdi Anthony47 » 02/12/13 10:59

Forse che si, forse che no...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel] associare ad un nome, un immagine in automatico

Postdi contiend » 03/12/13 10:15

Anthony47 ha scritto:Forse che si, forse che no...

aahhahahahaha! Grandissimo!

Il punto è questo.
Avevo seguito (l'anno scorso) le istruzioni per associare ad un nome, un immagine in automatico,
purtroppo alla fine dei fatti, avevo miseramente fallito non riuscendo ad arrivare al mio obbiettivo. :(

Alla fine abbandonai l'idea e ho lasciato stare per tempi migliori.

Ora quei tempi sono giunti (cioè ho solo un po' di tempo in più ^^)
quindi torno a chiedervi aiuto.

Rileggendo tutto il post però , forse sarebbe meglio attuare la cosa con un "anagrafe" che incroci parole ed immagini. (solo perché mi sembra più semplice)

Ovviamente vi capirei se mi mandaste a quel paese :)

In caso ci risentiamo l'anno prossimo
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 145
Iscritto il: 20/04/09 17:45

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "[excel] associare ad un nome, un immagine in automatico":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti