Condividi:        

[EXCEL] INSERIMENTO AUTOMATICO IMMAGINI

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] INSERIMENTO AUTOMATICO IMMAGINI

Postdi commerciale » 24/11/11 16:36

Ciao Anthony,
Sono finalmente riuscito a mettere mano al file (scaricabile qui):
https://rapidshare.com/files/2871938229 ... ne_5.2.xls
Ti chiedo aiuto sui seguenti punti:
1. Columns(Jolly + 1).ColumnWidth = (Largo) / 5.7  Comando che dovrebbe adeguare la larghezza della colonna con immagine alla grandezza dell’immagine.
Funziona perfettamente se i nomi immagini sono nella colonna A , mentre nel caso i nomi sono nelle colonna B o C ecc.. mi da errore, mi servirebbe uno “stratagemma” per sostituire il +1; Inoltre ho messo /5.7 perché visivamente mi sembrava un buon compromesso visivo, esiste una regola da utilizzare?

2. Rows.RowHeight = (Alto) + 4  Comando che adegua l’altezza della riga alla grandezza dell’immagine.
Come faccio a far effettuare questo comando solo sulle righe con immagini e non su tutto il foglio?

3. Sub removeAllCode() e Sub ESPORTA()
Riscontro alcuni errori in esportazione del file, in parte dipendono dal tipo di computer utilizzato ed in parte dalla versione excel utilizzata. Sai consigliarmi qualche miglioria per renderlo più "universale"?

4. Immagine “Non disponibile”: Anziché selezionare esternamente l’immagine non disponibile (DefPic) vorrei inserire di nascosto tale immagine nel file excel chiamandola ad esempio “NODISPO” (l’immagine l’ho già inserita nel foglio parametri nella cella C4).
Credo basti cambiare: ActiveSheet.Pictures.Insert(DefPic).Select … ma in che modo??

5. Attualmente funziona solamente se ListaF sono celle continue (esempio A2:A10)
Se volessi che la macro funzionasse ad intervalli (esempio A2:A10;C2:C10) che modifiche sarebbero da fare? o è solo una questione di errate istruzioni?

Grazie per l’aiuto che sarete in grado di darmi

Saluti
commerciale
Utente Junior
 
Post: 81
Iscritto il: 16/07/11 10:14

Sponsor
 

Re: [EXCEL] INSERIMENTO AUTOMATICO IMMAGINI

Postdi Anthony47 » 25/11/11 00:09

Ho guardato il file.
Per i punti 1 e 2 dovrebbero andare le seguenti modifiche nela macro Worksheet_Change (le modifiche sono dopo il marker *** e fino al marker ^^^
Codice: Seleziona tutto
Largo = Sheets("Parametri").Range("B8").Value 'Larghezza immagine e colonna
'***
Range(ListaF).Range("A1").Offset(0, Jolly).ColumnWidth = (Largo) / 5.7 '* Da rivedere...
Range(ListaF).RowHeight = (Alto) + 4
'^^^
For Each CELLA In Target

Per la larghezza, essa e' impostabile in "caratteri standard" e non in pixel, quindi dovrai accontentarti dell' approssimazione del "/5.7". Potresti fare una impostazione precisa ricorrendo a un loop che incrementa il ColumnWidth di un valore frazionale e leggendo poi il relativo Width (sara' letto in pixel); il problema e' che tu esegui quel codice ad ogni variazione, quindi ti ritroveresti in continuazione la colonna che viene ristretta e poi allargata in modo incrementale, con probabili effetti di tempi di esecuzione. Ma io avrei inserito qul codice non nella sezione Worksheet_Change, quindi eseguita continuamente, ma in una sezione di preparazione del foglio.

Per il punto 3 non sapendo quale e' l' obiettivo non so cosa suggerire; ovviamente la tecnica di modificare il contenuto del vba da macro richiede una buona padronanza del vba e del suo ambiente per evitare risultati indesiderati e poter gestire eventuali problemi che emergano.
Inoltre affinche' questo funzioni su un pc, le sue impostazioni di sicurezza (del pc) devono essere impostate in una situzione che non e' quella di default, e nemmeno quella raccomandabile come standard (deve essere dichiarato attendibile l' accesso al vba project).

Vorrei suggerire un approccio forse piu' semplice:
-copia i fogli in un nuovo workbook (usa i comandi Menu /Modifica /Sposta o copia foglio; spunti Crea una copia e come destinazione usa Nuova cartella, e registra una macro)
-avrai cosi' un nuovo file che contiene solo la macro di Worksheet_Change al suo interno
-puoi azzerare quel codice, lavorando su un pc con l' accesso attendibile al vba, seguendo le istruzioni di questo vecchio messaggio: viewtopic.php?p=461276#p461363 (solo le tre righe marcate "clear vecchio codice")
-salva il nuovo file, che sara' quindi senza macro.

Per il punto 4 la modifica sarebbe questa:
Codice: Seleziona tutto
            'ActiveSheet.Pictures.Insert(DefPic).Select    'Eliminare
                Sheets("Parametri").Shapes("NODISPO").Copy  'AGGIUNGI
                ActiveSheet.Paste                'AGGIUNGI


Per la 5, invece di dichiarare gli indirizzi, crea un intervallo con celle non contigue e dichiara quel nome in Parametri!B2.

Suggerisco infine di aggiungere una If Application.Intersect in testa alla macro, come fatto qui:
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
'**
If Application.Intersect(Target, Range(ListaF)) Is Nothing Then Exit Sub  '***  AGGIUNTA
'^^

Questo fa terminare la worksheet_change se non ci sono celle da processare.

Ciao
Anthony
Win7 + Office 2010 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 11217
Iscritto il: 21/03/06 17:03
Località: Ivrea

Re: [EXCEL] INSERIMENTO AUTOMATICO IMMAGINI

Postdi commerciale » 26/11/11 12:13

Grazie Anthony,
sei stato di grandissimo aiuto.
Per il punto 3 quello che suggerisci è la stessa cosa che ho già fatto ma in modo leggermente diverso, quindi per il momento lo tengo così. Per essere chiaro la macro fa questo: Apre il "salva con nome" (nb.apre solamente ma non salva!!), memorizza il percorso e il nome file che inserisco, copia il foglio "immagini" in una nuova cartella excel, la salva con nome e percorso memorizzato prima, elimina le macro...
A me funziona, su alcuni pc no invece... :-?
commerciale
Utente Junior
 
Post: 81
Iscritto il: 16/07/11 10:14

Re: [EXCEL] INSERIMENTO AUTOMATICO IMMAGINI

Postdi Anthony47 » 27/11/11 01:38

Se hai fatto in quel modo allora potrai ripulire le macro presenti nel foglio con queste tre righe:
Codice: Seleziona tutto
'clear vecchio codice:
For I = ActiveWorkbook.VBProject.VBComponents("immagini").CodeModule.CountOfLines To 1 Step -1
ActiveWorkbook.VBProject.VBComponents("immagini").CodeModule.DeleteLines I
Next I

Vanno eseguite mentre e' attivo il file contenente la copia del foglio Immagini; poi salvi il file col nome gia' acquisito.
Ovviamente su un pc che ha dichiarato attendibile l' accesso al vba project, cosa che sospetto non sia vero su tutti i pc su cui lavori (e mi sembra una precauzione giusta).

Ciao
Anthony
Win7 + Office 2010 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 11217
Iscritto il: 21/03/06 17:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] INSERIMENTO AUTOMATICO IMMAGINI":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti