Inserimento immagine sul foglio di lavoro. - pagina vista: volte

Questo articolo lo rivolgo a tutti coloro che realizzano lavori destinati ad amici e conoscenti, o altri.

In tutti i casi in cui sia previsto l'inserimento di una immagine su un foglio, come ad esempio un "logo aziendale" in un foglio emissione fattura, oppure in una pagina "documento", o lettera, o ddt, ecc. ecc., in genere si sfrutta il comando dal menù "Inserisci/Immagine/...", e l'immagine così inserita diventerà parte integrante della cartella di lavoro, e alla chiusura e salvataggio della cartella di lavoro, la stessa visualizzerà l'immagine anche su altri computer, senza necessità di portarsi dietro l'immagine "logo" originale.

Questo procedimento non fa una grinza, specie se chi realizza il lavoro è già in possesso di una immagine "logo" fornita dall'utente finale del lavoro.

Ma quando il "progettista" realizza un lavoro dove è previsto l'inserimento di un "logo", e però non conosce il potenziale utente finale di quel lavoro, dovrebbe poter rendere "personalizzabile" l'inserimento di un "logo" da parte dell'utente finale, predisponendo il progetto perchè accetti qualunque immagine l'utente sceglierà.

Mi permetto di suggerire una possibile soluzione (visto anche recenti richieste sull'argomento), semplice da realizzare:

  • anzichè inserire e dimensionare un'immagine, al suo posto inseriremo e dimensioneremo un "Controllo Immagine" ActiveX, preso da "Casella degli Strumenti" o "Strumenti di controllo" (a sinistra, sotto) e lo vedremo così (a destra, sotto, in modalità progettazione) e decideremo la sua dimensione e posizionamento:

Il controllo Image può accettare qualunque immagine o foto con le estensioni più comuni (.jpg, bmp, Gif), fornendo alla sua proprietà Picture il percorso e il nome che mira all'immagine (al logo) da visualizzare. Soluzione questa che consente al progettista di prevedere l'inserimento di un'immagine (da richiamare), ma sarà l'utente a decidere quale.

Per rendere il progetto "diversificabile" (ognuno potrà mettere il logo che preferisce), sarà sufficiente avvisare l'utente di due accorgimenti:

  • rinominare l'immagine, qualunque essa sia, chiamandola ad esempio "logo" (in genere in formato .Jpg)

  • spostare o copiare l'immagine nella stessa directory (o cartella) nella quale risiederà il file di excel

A questo punto sfrutteremo l'evento Workbook_Open per far caricare le immagini logo nel o nei controlli Image previsti nella cartella (lo stesso evento serve per più istruzioni se avremo inserito più Controlli Immagine); per evitare lamenti del debugger se l'immagine non sarà disponibile, inseriamo anche un controllo errori che avvisi con un messaggio:

  • Private Sub Workbook_Open()
    On Error GoTo 10:
    Sheets(1).Image1.Picture = LoadPicture(ThisWorkbook.Path & "\logo.jpg")
    Sheets(2).Image1.Picture = LoadPicture(ThisWorkbook.Path & "\logo.jpg")
    Exit Sub
    10: MsgBox "Immagine logo non trovata"
    End Sub

Come si nota dovremo indicare il nome del foglio sul quale è inserito un Controllo Immagine (ho esemplificato due Controlli Immagine inseriti su due fogli); l'istruzione ThisWorkbook.Path  dice ad Excel di cercare il file chiamato con LoadPicture e indicato di seguito ("logo.jpg") nella stessa unità e cartella nella quale risiede lo stesso file xls attualmente aperto.

Ovviamente sarà possibile usare qualsiasi nome per definire l'immagine da caricare, indicando lo stesso nelle istruzioni (e attenti alle minuscole/maiuscole) seguito dall'estensione, come pure caricare immagini diverse per ogni foglio, se sarà necessario.

Ultima cosa: per evitare di armeggiare con le dimensioni dell'immagine rispetto alle dimensioni previste per il Controllo Immagine (se diverse), consiglio di impostare la proprietà PictureSizeMode del/dei Controlli Image a fmPictureSizeModeStretch ; che consente di estendere l'immagine fino a occupare tutto il controllo Image, eventualmente deformando l'immagine logo se di misura più piccola rispetto al Controllo, e di farla rientrare nel Controllo se di misura più grande; l'ideale sarebbe disporre di una immagine logo più simile alla dimensione del Controllo. Esempi:

con PictureSizeMode impostata di default (fmPictureSizeModeClip) l'immagine è più stretta del Controllo e si notano gli spazi vuoti laterali
con PictureSizeMode impostata di default (fmPictureSizeModeStretch ) l'immagine si è allargata adattandosi al Controllo Image

Attenzione alle dimensioni in Kb dell'immagine usata (specie se ottenuta da scanner), più sono immagini "grosse" e più lentamente verranno caricate. Le immagini inserite nel Controllo Image saranno stampabili

 

Buon lavoro.

prelevato sul sito www.ennius.altervista.org