Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[excel 2010] immagini che cambiano

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

[excel 2010] immagini che cambiano

Postdi contiend » 19/02/15 21:02

Buonasera a tutti,
sto cercando di fare in modo che, cambiando dei nomi in determinate celle, mi ritorni l'immagine relativa.
Su un secondo foglio, ho inserito nomi e immagini stabili.
Sul primo foglio invece (chiamato BASE), verranno invece fatte continue modifiche ai nomi, in questo modo le immagini dovrebbero sempre modificarsi, relativamente alla tabella nel foglio 2 (chiamata GOLASS).

Inizialmente avevo strutturato il tutto con FORMULE > GESTIONE NOMI, creando 20 nomi differenti, per le 20 posizioni d'immagine.
Questo però, dopo che avevo verificato che tutto andava, creava un problema serio: ovvero, nel momento che io facevo la COPIA del foglio chiamato BASE, rinominandolo poi con un numero seriale (mi serve semplicemente per archiviare di settimana in settimana le varie pagine, ma non mi serve ai fini delle macro), excel si bloccava ed andava in crash. :eeh:

A questo punto vorrei risolvere con una MACRO, ma provandone alcune che ci sono sul forum, non sono riuscito ad adattarle alla mio foglio. Potete aiutarmi?

Le immagini attuali sono di dimensione 2,06cm * 2cm.
Le immagini non dovrebbero uscire dalla cena di delimitazione, rimanere centrali e proporzionate alle dimensioni attuali.

Grazie dell'attenzione e dell'eventuale supporto.


Ecco il file.
https://www.dropbox.com/s/521l2bdnu0juf ... .xlsm?dl=0
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 145
Iscritto il: 20/04/09 17:45

Sponsor
 

Re: [excel 2010] immagini che cambiano

Postdi Anthony47 » 22/02/15 13:09

Il tuo foglio ha una struttura cosi' disordinata che l' unico suggerimento che mi sento di dare e' di procedere con una macro autoregistrata.
1) sul foglio GOLAS a ogni immagine assegna il nome della relativa squadra: Selezioni l' immagine, nella "Casella Nome" (a sinistra della barra della formula; ora ci leggi qualcosa come Immagine xy) scrivi il nome da assegnare.
2) poi ti registri una macro; prendiamo l' area del tuo file che parte dalla cella AO58; avvia il registratore di macro mentre
-selezioni l' area col nome della squadra Ac Babalucci (AP60:AU61)
-selezioni l' immagine sottostante della AC Babbalucci e la cancelli
-vai su foglio Golass, selezioni l' immagine Babbalucci, la Copi
-torni su foglio Base, selezioni la cella che deve contenere l' immagine (AP62:AS67), Incolli
-vai nella "Casella nomi" e assegni a questa squadra il nome "XXX_AP62" (cioe' XXX_ seguito dalle coordinate della cella in alto a sx dove l' immagine e' inserita)
Idem con la squadra successiva
-selezioni l' area col nome squadra Ac Fiodena (AV60:BA61)
-selezioni l' immagine sottostante della AC Fiodena e la cancelli
-vai su foglio Golass, selezioni l' immagine Fiodena, la Copi
-torni su foglio Base, selezioni la cella che deve contenere l' immagine (AX62:BA67), Incolli
-vai nella "Casella nomi" e assegni a questa squadra il nome "XXX_AX62"
Idem con ognuna delle squadre successive; fai per cominciare una prova con 4 squadre.

Avrai ottenuto probabilmente un codice come questo:
Codice: Seleziona tutto
    Range("AP60:AU61").Select
    ActiveSheet.Shapes.Range(Array("Picture 1")).Select
    Selection.Delete
    Sheets("GOLASS").Select
    ActiveSheet.Shapes.Range(Array("AC BABBALUCCI")).Select
    Selection.Copy
    Sheets("BASE").Select
    Range("AP62:AS67").Select
    ActiveSheet.Paste
    Selection.ShapeRange.Name = "XXX_AP62"
    Selection.Name = "XXX_AP62"
    Range("AV60:BA61").Select
    ActiveSheet.Shapes.Range(Array("Picture 1476")).Select
    Selection.Delete
    Sheets("GOLASS").Select
    ActiveSheet.Shapes.Range(Array("AC FIODENA")).Select
    Selection.Copy
    Sheets("BASE").Select
    Range("AX62:BA67").Select
    ActiveSheet.Paste
    Selection.ShapeRange.Name = "XXX_AX62"
    Selection.Name = "XXX_AX62"
    'Etc etc

A questo punto modifica il codice come segue:
Codice: Seleziona tutto
'prima squadra:
    Range("AP60:AU61").Select
    mypic = Selection.Range("A1").Value         'AA
    On Error Resume Next                        'AA
    ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Offset(1, 0).Address(0, 0)).Delete  'MM
    On Error GoTo 0                             'AA
    Sheets("GOLASS").Select
    ActiveSheet.Shapes.Range(mypic).Select      'MM
    Selection.Copy
    Sheets("BASE").Select
    Range("AP62:AS67").Select
    ActiveSheet.Paste
'    Selection.ShapeRange.Name = "XXX_AP62"     'VA CANCELLATA
    Selection.Name = "XXX_" & ActiveWindow.RangeSelection.Range("A1").Address(0, 0)             'MM
'seconda squadra:
    Range("AV60:BA61").Select
    mypic = Selection.Range("A1").Value
    On Error Resume Next
    ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Offset(1, 0).Address(0, 0)).Delete
    On Error GoTo 0
    Sheets("GOLASS").Select
'etc etc

Le righe aggiunte sono marcate "AA"; quelle modificate "MM"; una istruzione e' da cancellare

A questo punto fai una prova con le prime N squadre su cui hai sviluppato la macro: cambia i nomi delle squadre, lancia la macro e controlla che le immagini siano corrette.

Se Si, allora registra la macro che riguarda le successive squadre, modifica il codice come gia' detto e accoda il nuovo codice corretto a quello della prima macro per avere una macro unica.

Se ti da' fastidio la "vibrazione dello schermo" durante l' esecuzione, allora inserisci in testa al codice Application.ScreenUpdating = False e poi Application.ScreenUpdating = True subito prima di End Sub

Ciao
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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel 2010] immagini che cambiano

Postdi contiend » 26/02/15 17:28

Eccomi qua. :)
Finalmente ho potuto provare la tua macro modificata. Grandiosa! 8)
Direi che ci siamo quasi.

Mi piacerebbe modificare solo la centratura dei loghi. Attualmente i loghi vengono posizionati in alto a sinistra della cella. E' possibile aggiungere una riga di comando che centri orizzontalmente e veriticalmente il logo?

> nell'esempio specifico della squadra 1, il logo dovrebbe essere centrato nella cella AP62 attualmente invece si posiziona in alto a sinistra della cella stessa


Il codice uscito fuori è questo (test con 4 squadre):
Codice: Seleziona tutto
Range("AP60:AU61").Select
     mypic = Selection.Range("A1").Value
     On Error Resume Next
     ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Offset(1, 0).Address(0, 0)).Delete
     On Error GoTo 0
    Sheets("GOLASS").Select
     ActiveSheet.Shapes.Range(mypic).Select
    Selection.Copy
    Sheets("BASE").Select
    Range("AP62:AS67").Select
    ActiveSheet.Paste
    Selection.Name = "XXX_AP62"
   
   
    Range("AV60:BA61").Select
     mypic = Selection.Range("A1").Value
     On Error Resume Next
     ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Offset(1, 0).Address(0, 0)).Delete
     On Error GoTo 0
    Sheets("GOLASS").Select
     ActiveSheet.Shapes.Range(mypic).Select
    Selection.Copy
    Sheets("BASE").Select
    Range("AX62:BA67").Select
    ActiveSheet.Paste
    Selection.Name = "XXX_AX62"
   
   
    Range("BD60:BI61").Select
     mypic = Selection.Range("A1").Value
     On Error Resume Next
     ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Offset(1, 0).Address(0, 0)).Delete
     On Error GoTo 0
    Sheets("GOLASS").Select
     ActiveSheet.Shapes.Range(mypic).Select
    Selection.Copy
    Sheets("BASE").Select
    Range("BD62:BG67").Select
    ActiveSheet.Paste
    Selection.Name = "XXX_BD62"
   
   
    Range("BJ60:BO61").Select
     mypic = Selection.Range("A1").Value
     On Error Resume Next
     ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Offset(1, 0).Address(0, 0)).Delete
     On Error GoTo 0
    Sheets("GOLASS").Select
     ActiveSheet.Shapes.Range(mypic).Select
    Selection.Copy
    Sheets("BASE").Select
    Range("BL62:BO67").Select
    ActiveSheet.Paste
    Selection.Name = "XXX_BL62"


Grazie infinte :oops:


PS : allego , eventualmente servisse, il nuovo file di test con solo 4 squadre di test ed il pulsante per la macro.
https://www.dropbox.com/s/zvlqdyjisd9z7 ... .xlsm?dl=0
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 145
Iscritto il: 20/04/09 17:45

Re: [excel 2010] immagini che cambiano

Postdi Anthony47 » 26/02/15 23:52

Sugli aspetti estetici non sono particolarmente sensibile... Comunque controlla se inserendo queste righe dopo ogni ActiveSheet.Paste ottieni qualcosa di utile:
Codice: Seleziona tutto
    Selection.ShapeRange.ScaleHeight ((ActiveWindow.RangeSelection.Height - 6) / Selection.Height), msoFalse, msoScaleFromTopLeft
    Selection.Top = ActiveWindow.RangeSelection.Top + 3
    Selection.Left = ActiveWindow.RangeSelection.Left + 3

Ciao
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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel 2010] immagini che cambiano

Postdi contiend » 27/02/15 09:38

Codice: Seleziona tutto
Range("AP60:AU61").Select
     mypic = Selection.Range("A1").Value
     On Error Resume Next
     ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Offset(1, 0).Address(0, 0)).Delete
     On Error GoTo 0
    Sheets("GOLASS").Select
     ActiveSheet.Shapes.Range(mypic).Select
    Selection.Copy
    Sheets("BASE").Select
    Range("AP62:AS67").Select
    ActiveSheet.Paste
     Selection.ShapeRange.ScaleHeight ((ActiveWindow.RangeSelection.Height - 6) / Selection.Height), msoFalse, msoScaleFromTopLeft
    Selection.Top = ActiveWindow.RangeSelection.Top + 3
    Selection.Left = ActiveWindow.RangeSelection.Left + 12
       Selection.Name = "XXX_AP62"


Così è perfetto. Grazie :D
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 145
Iscritto il: 20/04/09 17:45

Re: [excel 2010] immagini che cambiano

Postdi contiend » 27/02/15 14:14

Ciao Anthony47
mi sono accorto che se continuo ad eseguire la macro sul foglio, lui mi sostituisce CORRETTAMENTEsempre la PRIMA e la TERZA immagine di squadra, ma crea un DOPPIONE (lascia sotto la precedente) dell'immagine DUE e QUATTRO! C'è un modo per risolvere?

Inoltre, si può aggiungere una riga sulla macro che, se non c'è una corrispondenza nel nome SCRITTO (sopra all'immagine), lui semplicemente non inserisca alcuna immagine passando così a quella successiva dove la corrispondenza è presente? (attualmente se il nome è sbagliato o non è presente , la macro si blocca per un errore, giustamente :oops: ).

Grazie dell'aiuto
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 145
Iscritto il: 20/04/09 17:45

Re: [excel 2010] immagini che cambiano

Postdi Anthony47 » 27/02/15 15:31

Se non c' e' corrispondenza e' un errore che va recuperato nel foglio :D :diavolo: :D
Quanto al fatto che non cancella alcune immagini dammi un file con la macro modificata e un tot di immagini e vedro'.

Ciao
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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel 2010] immagini che cambiano

Postdi contiend » 27/02/15 15:46

Anthony47 ha scritto:Se non c' e' corrispondenza e' un errore che va recuperato nel foglio :D :diavolo: :D
C'ho provato :D , risolverò in altro modo :)


Anthony47 ha scritto:Quanto al fatto che non cancella alcune immagini dammi un file con la macro modificata e un tot di immagini e vedro'. Ciao



Rimanendo nell'esempio delle 4 immagini, ecco il foglio.
https://www.dropbox.com/s/g4rhfvftb0568 ... .xlsm?dl=0

Come vedi, se avvi la macro con i nomi già presenti, lui inserisce la prima volta CORRETTAMENTE le 4 immagini (presenti in GOLASS).
Se poi però, modifichiamo l'ordine dei nomi delle squadre, o semplicemente riavviamo la macro, le immagini 2 e 4 vengono duplicate.
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 145
Iscritto il: 20/04/09 17:45

Re: [excel 2010] immagini che cambiano

Postdi Anthony47 » 28/02/15 00:22

La tua macro contiene istruzioni del tipo
Selection.Name = "XXX_AP62"
Ma io avevo detto che queste istruzioni andavano eliminate, infatti nelle modifiche che ti avevo dato c'era un "apostrofo" a inizio riga, che trasforma l' istruzione in puro commento.
Mentre non hai inserito la riga
Codice: Seleziona tutto
    Selection.Name = "XXX_" & ActiveWindow.RangeSelection.Range("A1").Address(0, 0)             'MM

Questa istruzione e' propedeutica alla cancellazione successiva, quindi dovrebbe spiegare il problema che segnali.

Mi sono fermato al codice della prima immagine, approfondisci anche il resto, ovviamente.

Ciao
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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel 2010] immagini che cambiano

Postdi contiend » 28/02/15 08:19

Codice: Seleziona tutto
Range("AP60:AU61").Select
     mypic = Selection.Range("A1").Value
     On Error Resume Next
     ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Offset(1, 0).Address(0, 0)).Delete
     On Error GoTo 0
    Sheets("GOLASS").Select
     ActiveSheet.Shapes.Range(mypic).Select
    Selection.Copy
    Sheets("BASE").Select
    Range("AP62:AS67").Select
    ActiveSheet.Paste
    Selection.ShapeRange.ScaleHeight ((ActiveWindow.RangeSelection.Height - 6) / Selection.Height), msoFalse, msoScaleFromTopLeft
    Selection.Top = ActiveWindow.RangeSelection.Top + 3
    Selection.Left = ActiveWindow.RangeSelection.Left + 12
    Selection.Name = "XXX_" & ActiveWindow.RangeSelection.Range("A1").Address(0, 0)
   



    Range("AV60:BA61").Select
     mypic = Selection.Range("A1").Value
     On Error Resume Next
     ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Offset(1, 0).Address(0, 0)).Delete
     On Error GoTo 0
    Sheets("GOLASS").Select
     ActiveSheet.Shapes.Range(mypic).Select
    Selection.Copy
    Sheets("BASE").Select
    Range("AX62:BA67").Select
    ActiveSheet.Paste
    Selection.ShapeRange.ScaleHeight ((ActiveWindow.RangeSelection.Height - 6) / Selection.Height), msoFalse, msoScaleFromTopLeft
    Selection.Top = ActiveWindow.RangeSelection.Top + 3
    Selection.Left = ActiveWindow.RangeSelection.Left + 12
    Selection.Name = "XXX_" & ActiveWindow.RangeSelection.Range("A1").Address(0, 0)


Così dovrebbe andare bene.. ma il problema persiste! :undecided:

Ti ho inserito due gruppi d'istruzioni dato che il problema si avvera sempre con la seconda, quarta, sesta, ottava ecc.. immagine.

Ancora grazie
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 145
Iscritto il: 20/04/09 17:45

Re: [excel 2010] immagini che cambiano

Postdi Anthony47 » 01/03/15 00:14

Effettivamente le celle delle squadre di destra non sono simili ma speculari a quelle di sinistra per cui le istruzioni funzionano a giorni alterni...
Dobbiamo spostare nella macro le istruzioni che selezionano l' area in cui va la foto e di conseguenza modificare l' istruzione che cancella la vecchia foto.
Il nuovo blocco di istruzioni e' questo:
Codice: Seleziona tutto
Range("AP60:AU61").Select
     mypic = Selection.Range("A1").Value
     Range("AP62:AS67").Select      '****
     On Error Resume Next
     ActiveSheet.Shapes.Range("XXX_" & Selection.Range("A1").Address(0, 0)).Delete    'MMMM
     On Error GoTo 0
    Sheets("GOLASS").Select
    ActiveSheet.Shapes.Range(mypic).Select
    Selection.Copy
    Sheets("BASE").Select
    ActiveSheet.Paste
    Selection.ShapeRange.ScaleHeight ((ActiveWindow.RangeSelection.Height - 6) / Selection.Height), msoFalse, msoScaleFromTopLeft
    Selection.Top = ActiveWindow.RangeSelection.Top + 3
    Selection.Left = ActiveWindow.RangeSelection.Left + 12
    Selection.Name = "XXX_" & ActiveWindow.RangeSelection.Range("A1").Address(0, 0)
L' istruzione marcata **** e' stata spostata in quella posizione (era dopo la Sheets("BASE").Select); quella marcata MMMM e' stata modificata

Giacche' ci siamo, puoi fare qualche semplificazione nella macro; in particolare puoi sostituire tutti i blocchi
Sheets("GOLASS").Select
ActiveSheet.Shapes.Range(mypic).Select
Selection.Copy
Sheets("BASE").Select

Con
Codice: Seleziona tutto
Sheets("GOLASS").Shapes(mypic).Copy


Ciao
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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel 2010] immagini che cambiano

Postdi contiend » 03/03/15 16:18

Testato , provato , PERFETTO! Grazie :D
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 145
Iscritto il: 20/04/09 17:45


Torna a Applicazioni Office Windows


Topic correlati a "[excel 2010] immagini che cambiano":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti