Stampare le pagine di un Foglio di lavoro. dal 04/09/04 pagina vista: volte 21/11/2008: modifica: Contare da Foglio di lavoro quante sono le pagine da stampare Una delle cose meglio riuscite di Excel, e sono tante, è la sua possibilità di gestire la stampa delle pagine dei fogli. Uso il termine "pagine" in quanto ogni foglio di lavoro, con tutte le sue righe (65536) e le sue colonne (255) conta un numero considerevole di pagine, corrispondenti al numero di righe e di colonne che normalmente possono essere stampate in un normale foglio A4. Precisiamo subito che in Excel usare l'opzione generica "Stampa Foglio", senza definire una precisa "area di stampa" ottiene risultati molto validi; infatti Excel "sente" le celle che contengono valori, e regola quindi automaticamente la quantità di pagine da stampare, in funzione delle celle occupate. Sarà comunque opportuno dare un'occhiata alla "Anteprima di stampa" per verificare che tutto corrisponda a ciò che vorremo ottenere. E' evidente che se avremo un foglio con dati sparsi e che magari non vorremo stampare tutti, sarà necessario impostare le aree di stampa che riguardano i dati da stampare. Comunque valutiamo un esempio estremo come questo: un valore nella cella A1, e un solo altro valore nella cella I65536, porterebbe Excel a considerare che occorrerebbero 1214 pagine (a tante corrisponde la lunghezza del foglio dalla prima riga all'ultima) in quanto Excel regola la quantità di pagine da stampare tra la prima cella e l'ultima che contengono valori, anche se nel mezzo non esistono dati. Lo stesso accadrebbe se esistessero dati nelle colonne oltre le 9 colonne larghezza standard che formano il layout di stampa. L'esercizio che presento è impostato sulla possibilità quindi di mandare in stampa solo le pagine che vorremo e come, sempre via codice, visualizzare prima le pagine da mandare in stampa senza usare "Anteprima di Stampa". Condizione comunque necessaria è che dovremo almeno una volta, controllare in "Anteprima di stampa", che la larghezza di una nostra ipotetica tabella o database rientri nella pagina di stampa. Ma procediamo con ordine. Excel ci dà la possibilità di mutare la larghezza delle colonne e l'altezza delle righe, quindi queste note si riferiranno alle misure standard di righe e colonne, così come ce le presenta Excel. E' necessario infatti definire uno standard per poter seguire le varie istruzioni e spiegazioni che qui troverete. Se poi qualcuno userà dimensioni non standard per i propri fogli, dovrà adattare i concetti qui contenuti alle proprie esigenze, magari scegliendo un "orientamento" del foglio in orizzontale anzichè in verticale, in modo da contenere più colonne. Definiamo quindi le dimensioni standard di un' area di stampa : essa corrisponde a 54 righe (in Excel 2003, 50 righe in Excel 2010) e a 9 colonne cioè la colonna I compresa. L'area di stampa si può riconoscere dal bordo tratteggiato che apparirà ai limiti estremi di ogni area corrispondente ad una pagina in formato A4. E' possibile usare un'istruzione per verificare quanto detto, basta infatti lanciare una macro che contenga questo:
e vedremo questo: (le frecce rosse indicano le linee tratteggiate di delimitazione area di stampa) Un utile accorgimento sarà quello di destinare almeno un paio di righe a "Blocca riquadri" (area gialla) dal menù "Finestra/Blocca Riquadri", per alloggiare i vari pulsanti associati alle macro che serviranno per la navigazione tra le pagine, come vedremo più avanti. Per togliere le linee tratteggiate basterà usare la stessa istruzione ma impostata a False:
Da ribadire che non stiamo parlando di "Interruzioni di pagina", peraltro aggiungibili via codice, (con il metodo Add: HPageBreaks.Add ) ma di divisioni dell'area di stampa, gestite da Excel, in pagine del formato A4, cioè di come Excel divide automaticamente il Foglio in tante pagine. Anzi, poichè ritengo che aggiungere "Interruzioni di pagina" crei non poche sofferenze, invito i curiosi a leggersi la guida in linea relativa all'argomento "HPageBreaks". Non è mia intenzione trattare l'argomento stampa in maniera completa in questo articolo, soprattutto per il problema rappresentato dalle necessità che ogni utente avrà per impostare le proprie aree di stampa (dimensioni celle e colonne, ampiezza tabelle, tipo e dimensione caratteri, ecc. ecc.), che diversificano in modo sostanziale le modalità operative e di settaggi, ma esistono dei passaggi comuni che possono essere visti e argomentati, e sono:
Inoltre è possibile, col pulsante "Anteprima interruzion di pag", passare al foglio di lavoro e vedere tutte le pagine del foglio, in formato "ristretto" divise e marcate con il relativo numero di pagina (che non verrà stampato), dalla prima all'ultima. Da questa modalità visiva, potremo dal menù File, scegliere di nuovo la voce "Anteprima di stampa" cliccando sul pulsante "Normale" ora visibile, per ritornare alla visalizzazione normale del foglio di lavoro. Queste le immagini : L'esercizio che vedremo, è adatto per quei database molto lunghi, tipo le tabelle gestione articoli di magazzino, o comunque elenchi di qualsiasi natura, dove si voglia stampare solo una parte di tutta la tabella o elenco. Abbiamo detto che con una altezza riga standard, in una pagina di stampa entrano 54 righe; se vorremo visualizzare le pagine che vorremo stampare per controllare se sono quelle giuste, possiamo usare questa semplice routine:
La routine di base è questa:
Ma poichè così i numeri di pagina da stampare saremmo costretti a scriverli come dati costanti nel codice, vogliamo poter fornire ai due argomenti i numeri delle pagine che avremo scelto, e dovremo allora usare due variabili reperite con altrettante inputbox, in modo da rendere dinamica la nostra istruzione, che diventerà:
I più attenti avranno capito che sarà possibile, prima di usare PrintOut nella stessa routine, impostare istruzioni che si occupino di settare altre condizioni, come i bordi pagina, l'intestazione o il piè di pagina, il fattore di zoom, ecc. ecc. 21/11/2008 Contare da Foglio di lavoro quante sono le pagine da stampare. Senza utilizzare l'anteprima di stampa per controllare e contare quante sono le pagine che andranno in stampa, magari per porre in una cella la dicitura "documento composto da " & nPagine & " pagine" oppure per essere avvisati con un messaggio di questo numero, possiamo usare l' istruzione seguente che però NON rileva le pagine parziali (intese come Pagina intera occupata), quindi se fossero 7 pagine e mezza, otterremmo solo 7 e non 8 come in realtà sarebbero.
Sfruttando invece quanto detto poco sopra, cioè che in una pagina di stampa entrano 54 righe (se nessuno ha modificato le altezze standard) è sufficiente contare quante sono le righe occupate in una sola colonna di dati che andranno in stampa (ad esempio la colonna A) e dividere il numero delle righe occupate diviso 54 (o altro numero di righe se diverso). Inseriamo un semplice controllo per rilevare se il numero delle pagine trovate contiene decimali, caso in cui aggiungeremo 1 al numero trovato:
P.s.: è possibile
controllare da una anteprima di stampa da quante righe sono formate le
pagine da stampare, sarà possibile usare quel numero come divisore nella
routine letta sopra.
Buon lavoro. prelevato sul sito www.ennius.altervista.org |