Condividi:        

Macro per stampa a libretto

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

Macro per stampa a libretto

Postdi casi » 18/02/08 09:41

Buon giorno a tutti!

Ho il seguente quesito che nasce dalla necessità di semplificare un lavoro ripetitivo che purtroppo devo fare quasi quotidianamente. Spero che qualcuno mi possa aiutare a risolverlo.
Utilizzo Word 2000 per scrivere manuali di istruzioni per i prodotti commercializzati dalla mia azienda.
Tipicamente sono testi, dalle 30 alle 80 pagine, che stampo a laser su fogli A4 e poi fotocopio fronte/retro.

Visto che ora ho la possibilità di stampare anche su formati A3 mi piacerebbe poter "convertire" gli attuali files, in modo più o meno automatico, in modo che ciascuna pagina attuale mi occupi metà foglio A3 e che vengano impaginate a libro.
Il risultato finale dovrebbe essere quindi una serie di fogli A3 da fotocopiare F/R e poi piegare a metà.
La conversione in A3 è ovviamente piuttosto banale, purtroppo mi sono bloccato nella seconda parte perchè le pagine devono seguire un ordine particolare.

Esiste una funzione o la possibiltà di creare una macro che facca tutto ciò in automatico?
Altrimenti mi sapete suggerire un editor, magari open source, che implementi questa possibilità?

Grazie
A presto!
casi
Utente Junior
 
Post: 26
Iscritto il: 18/01/06 13:29

Sponsor
 

Re: stampa a libretto su A3

Postdi Anthony47 » 18/02/08 17:16

Se hai una stampante A3 allora penso che hai gia' nel suo driver l' opzione di stampa libretto; controlla quindi bene tra le opzioni di stampa, se proprio manca forse si riesce a creare una macro che fa un lavoro analogo.

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: stampa a libretto su A3

Postdi Anthony47 » 19/02/08 22:35

Risolto o serve la macro??

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: stampa a libretto su A3

Postdi casi » 21/02/08 09:24

Ciao Anthony,
grazie per l'interesse e scusa per il ritardo della risposta.

La stampante che utilizzo è una Kyocera FS6900. Ho cercato qualche utility per questa applicazione prevista dal driver ma non sono riuscito a trovare niente. Ho cercato anche driver più recenti ma senza trovare nulla di utile.

In compenso ho trovato questa pagina: http://www.abaconline.com/?q=node/21 che affronta un problema simile e riporta la sequenza di pagine giusta da mandare in pasto alla stampante per massimo 32 pagine.
Credo che sia possibile riuscire ad estrapolare una formuletta generale che dia la sequenza per libretti di qualunque numero di pagine.
Se riesco a trovarla la riporto qui.

grazie ancora per adesso!
casi
Utente Junior
 
Post: 26
Iscritto il: 18/01/06 13:29

Re: stampa a libretto su A3

Postdi Anthony47 » 21/02/08 13:15

Humm, strano che una stampante A3 non abbia nel suo driver la possibilita' della stampa a libretto; siccome sono un malfidente :-) ti chiedo: hai esaminato tutte le opzioni che puoi scegliere nella finestra "Stampa" (quella che vedi dopo aver fatto Menu /Stampa)?

Se non c' e', allora dimmi se la stampante ha la stampa "fronte retro" integrata o se devi stampare prima tutte le facciate A del foglio e poi le facciate B dopo aver rimesso nell' alimentazione i fogli gia' stampati (rivoltati...); infine, nel caso di fronte retro manuale, i fogli in uscita si ritrovano in ordine crescente (con il retro in alto) o in ordine decrescente (lo stampato in alto).
Sono tutte informazioni che servono per personalizzare la macro e semplificarne l' uso.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: stampa a libretto su A3

Postdi casi » 21/02/08 14:21

Sì ho controllato tutte le Nella pagina di Menù/Stampa e non mi sembra che ci sia un'opzione di stampa che richiami in qualche modo all'impaginazione tipo libro.

Anche le finestre "Proprietà" e poi anche "Avanzate" non contengono tool per effettuare una stampa di questo tipo.

Circa il F/R: sì ho la possibilità di stampare fronte/retro automaticamente.
Nella finestra "Proprietà" posso specificare le opzioni di orientamento, fronte retro e ordine delle pagine (che però contiene solo dalla prima all'ultima o dall'ultima alla prima).

Grazie ancora!
casi
Utente Junior
 
Post: 26
Iscritto il: 18/01/06 13:29

Re: stampa a libretto su A3

Postdi Anthony47 » 21/02/08 16:39

Prova con questa macro:
Codice: Seleziona tutto
Sub Libretto()
'by Anthony
'
CDoc = ActiveDocument.Name
If MsgBox("Documento corrente: " & CDoc & vbCrLf & "Procedo con la stampa a libretto?", _
vbOKCancel, "Verifica File Selezionato") = 2 Then Exit Sub
'
Do
TotPag = ActiveDocument.BuiltInDocumentProperties(14)
If TotPag Mod 4 = 0 Then Exit Do
Selection.EndKey Unit:=wdStory, Extend:=wdMove
Selection.InsertBreak Type:=wdPageBreak
Loop
TotFogli = TotPag / 4
'
ActivePrinter = "PDF-Creator"       '<<<< MODIFICARE
'
CF = 1: CB = TotPag
For I = 0 To TotFogli - 1
QualiPag = CB - I * 2 & "," & CF + I * 2 & "," & CF + I * 2 + 1 & "," & CB - I * 2 - 1

Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:=QualiPag, PageType:= _
        wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
        True, PrintToFile:=False, PrintZoomColumn:=2, PrintZoomRow:=1, _
        PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
Next I
End Sub


Guarda subito l' istruzione marcata <<<< e cambiala con la definizione della tua stampante. Per questo
-registra una macro dove imposti la stampante Kyocera (devi partire da una selezione diversa) e stampi pag 1 el documento
-nel vba editor, cerca la macro registrata, copia l' istruzione "ActivePrinter = etc etc" e incollala al posto di quella che ho usato io.
-fine

Torna su Word, seleziona il documento da stampare, poi lancia la macro.
Ti chiedera' conferma se vuoi procedere o cambiare documento.

La macro aggiunge in coda al doc le pagine vuote che servono (se servono), poi stampa pagina dopo foglio dopo foglio fino alla fine del documento.

Fai le prove prima con un doc di 7-10 pagine.
Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: stampa a libretto su A3

Postdi Anthony47 » 22/02/08 10:36

Mi accorgo solo ora che anche l' istruzione Application.PrintOut va modificata, per adeguarla alle caratteristiche del tuo driver.

Per questo, registra una macro mentre
-selezioni la Kyocera
-mandi in stampa le pag 1,3,5,7 a 2 pag per facciata e fronte retro
Ferma la macro e posta le istruzioni che ti genera (Alt-F11 per andare sul vba editor, poi cerca la macro)

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: stampa a libretto su A3

Postdi Dylan666 » 22/02/08 12:52

Davvero utile! Dato che io invece ho una stampante comunissima per A4 che stampa solo fronte, per utilizzare il tuo script devo solo mettere il nome della stampante al posto di "PDF-Creator" dico bene? Cioè, non avendo il supporto per il fronte-retro non devo adattare nulla, dico bene?
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: stampa a libretto su A3

Postdi Anthony47 » 22/02/08 19:54

Errato.
Bisogna modificare la macro per stampare prima le facciate "fronte" e poi, ricaricando la carta in senso rovesciato, stampare le facciate "retro".
E' un lavoro che penso di fare, e che come ulteriore variante richiede di sapere se la pagine stampate vengono accumulate in ordine crescente o in ordine inverso; questo determina l' ordine di stampa delle pagine "retro" senza dover smazzare le pagine e invertirle nell' alimentatore.

Se qualcuno mi precede, spero che posti il codice...

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: stampa a libretto su A3

Postdi Dylan666 » 24/02/08 14:33

Se implementassi queste funzioni mi sarebbero davvero utili :)
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: stampa a libretto su A3

Postdi Anthony47 » 25/02/08 15:06

Ho sviluppato questa macro:
Codice: Seleziona tutto
Sub Libretto()
'by Anthony
'
CDoc = ActiveDocument.Name
If MsgBox("Documento corrente: " & CDoc & vbCrLf & "Procedo con la stampa a libretto?", _
vbOKCancel, "Verifica File Selezionato") = 2 Then Exit Sub
'
Refeed:
Feed = Val(InputBox(">>0 per Uscire senza stampare" & vbCrLf & ">>1 per stampante con Fronte/Retro integrato" & _
       vbCrLf & "   Ordine di stampa: Fronte1/Retro1, F2/R2, F3/R3, etc" & vbCrLf & _
       ">>2 per stampare prima le pagine Fronte e poi le retro" & vbCrLf & _
       "   Ordine di stampa: F1, F2, F3, etc; poi R1, R2, etc", "Scegli il tipo di stampante", 0))
If Feed = 0 Then Exit Sub
If Feed > 2 Then GoTo Refeed
'Normallizza numero di pagine su multiplo di 4
Do
TotPag = ActiveDocument.BuiltInDocumentProperties(14)
If TotPag Mod 4 = 0 Then Exit Do
Selection.EndKey Unit:=wdStory, Extend:=wdMove
Selection.InsertBreak Type:=wdPageBreak
Loop

TotFogli = TotPag / 4

'ActivePrinter = "PDF-Creator"              '<<<< Modificare
'ActivePrinter = "EPSON Stylus Photo RX420 Series"         '<<<<Modificare
ReFor1:
ISt = 0: IEnd = TotFogli - 1: IStep = 1
ReFor2:
CF = 1: CB = TotPag
For I = ISt To IEnd Step IStep
Select Case Feed
Case 1
PF = CB - I * 2 & "," & CF + I * 2
PR = CF + I * 2 + 1 & "," & CB - I * 2 - 1
QualiPag = PF & "," & PR
Case 2
QualiPag = CB - I * 2 & "," & CF + I * 2
Case 3
QualiPag = CF + I * 2 + 1 & "," & CB - I * 2 - 1
End Select

    Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:=QualiPag, PageType:= _
        wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
        True, PrintToFile:=False, PrintZoomColumn:=2, PrintZoomRow:=1, _
        PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0

Next I
If Feed = 1 Or Feed = 3 Then Exit Sub
Feed = Feed + 1
ReRetro:
FRetro = Val(InputBox(UCase("Riposizionare le stampe dal tray di uscita a quello di entrata" & _
       " invertendo il FRONTE col RETRO ") & vbCrLf & _
       ">>Inserire 1 se la pag. 1 e' in cima alle pagine stampate" & vbCrLf & _
       ">>Inserire 2 se la pag. 1 e' in fondo alle pagine stampate" & vbCrLf & _
       "NB: in cima/in fondo definito guardando dal lato gia' stampato", "Scegli l' ordine di stampa retro", 0))
If FRetro = 0 Or FRetro > 2 Then
If MsgBox("Sicuro che vuoi abortire il processo di Stampa Retro?" & vbCrLf & _
     "Yes per abort; No per ripetere la scelta", vbYesNo) = 6 Then Exit Sub
GoTo ReRetro
End If
If FRetro = 2 Then GoTo ReFor1
IEnd = 0: ISt = TotFogli - 1: IStep = -1
GoTo ReFor2
'
End Sub

Modalita’ d’ uso:
-selezionare il documento da stampare
-lanciare la macro e confermare se il documento selezionato e’ corretto
-scegliere il tipo di stampante disponibile:
---1, stampante che fa Fronte/Retro automatico. Con questa selezione pero’ E’ NECESSARIO MODIFICARE L’ ISTRUZIONE Application.PrintOut; poiche’ il vba per word non e’ il mio forte, non ho individuato il parametro che controlla questa modalita’ CHE QUINDI NON DOVREBBE FUNZIONARE regolarmente. Se qualcuno puo’ aiutare, si faccia sentire; se qualcuno dispone di stampante Fronte/Retro, allora provi a registrare una macro mentre stampa in modalita’ Fronte e Retro, 2 pagine per facciata, le pagine 1,3,5,7 e poi posti il codice ottenuto, magari aiuta.
---2, stampanti dove prima bisogna stampare le facciate Fronte e successivamente le facciate Retro
-Se la scelta e’ 2, a completamento delle pagine Fronte:
---verificare se la pag 1 e’ in cima al blocco delle pagine stampate o in fondo
---inserire le pagine nell’ alimentatore avendole capovolte
---rispondere alla domanda sull’ ordine delle pagine stampate e continuare la stampa.

Noterete che le istruzioni per impostare la stampante sono "commentate", quindi la macro lavora sulla stampante "correntemente selezionata"; potrebbe invece essere utile inserire l' istruzione che ne imposta una; anche qui la tecnica del "registra macro" puo' aiutare a determinare piu' che la sintassi dell' istruzione "ActivePrinter" il vero nome della vostra stampante.

Suggerisco di fare esperimenti con documenti di 9-11 pagine, abbastanza lunghi per capire gli errori che si possono fare nel posizionare la carta senza sciuparne troppa . . .

Fate sapere le vostre esperienze e mandate i vostri suggerimenti per migliorare.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per stampa a libretto

Postdi lovange » 26/02/08 08:16

Anhony, scissi nel tempo, ho ricevuto due messaggi, riportanti come oggetto: l 1° [EXCEL]Errore di visual basic, datato 20/02/08 02:19; il 2° Macro per stampa su libretto A3 datato 18/02/08, entrambi contengono nozioni interessanti, da una rapida visone al FORUM ,scopro, che i due mesaggi sono già presenti nel FORUM, ma non sono io l'interessato a quelle soluzoni. Essendo interessato ad altre soluzione, potrebbe esserci un'errore d'invio. LOVANGE
lovange
Utente Junior
 
Post: 13
Iscritto il: 14/10/07 10:33

Re: Macro per stampa a libretto

Postdi Anthony47 » 26/02/08 17:15

Intendi messagi via mail o messaggi personali sul forum? In ambedue i casi dovresti identificare il mittente e verificare con lui lo scopo dei messaggi.
Dal sito dovresti ricevere mail automatiche con soggetto “Notifica di risposta topic –Titolo del topic” (solo per aggiornamenti sui topic che stai seguendo) oppure “Hai ricevuto un nuovo messaggio privato”

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per stampa a libretto

Postdi casi » 03/03/08 15:59

Grazie Anthony sei un mito!!!!!

Scusa per il ritardo ma ho potuto verificare la macro solo oggi a causa dei soliti mali di stagione...

Già la prima macro funziona bene anche se mi sono permesso di fare una piccola modifica. Mi sono accorto infatti che le 2 pagine (sia nel fronte che nel retro) venivano stampate in senso invertito, cioè quella che doveva stare a destra stava a sinistra e viceversa.
Ho modificato quindi l'istruzione che crea l'ordine di stampa come segue:

QualiPag = CF + I * 2 & "," & CB - I * 2 & "," & CB - I * 2 - 1 & "," & CF + I * 2 + 1

In questo modo il funzionamento è perfetto!

Ho provato anche la seconda macro con una stampante non F/R.
Mi sembra che il problema destra/sinistra sia lo stesso, ma a questo punto correggerla è facile.

grazie ancora, mi hai permesso di ottenere un ottimo risultato!
casi
Utente Junior
 
Post: 26
Iscritto il: 18/01/06 13:29

Re: Macro per stampa a libretto

Postdi Anthony47 » 03/03/08 21:01

Ho riprovato (su stampante senza fronte/retro automatico), ma non ho il problema e la stampa si completa regolarmente. Mi puoi dare la sequenza di stampa che ti viene con la macro originale, da poterci pensare su?

Se altri hanno sperimentato, anche il loro feedback puo' aiutare.
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per stampa a libretto

Postdi Dylan666 » 04/03/08 09:13

Quando avete messo tutto a posto ri-postate il codice completo per un povero mortale, grazie :P
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: Macro per stampa a libretto

Postdi casi » 04/03/08 09:16

Per esempio, in un documento di 8 pagine, la sequenza che esce è:

1-8, 3-6, 7-2, 5-4

mentre dovrebbe essere: 8-1, 6-3, 2-7, 5-4

In altre parole, come in qualunque libro, la pagina dispari deve trovarsi a destra e quella pari nella metà di sinistra.
Questo credo che valga come regola generale, indipendentemente dal fatto che sia la stampante gestisca poi il F/R o no.

Per maggiore completezza ti do' un altro dettaglio anche se credo sia superfluo.
Di solito faccio in modo che Word mi inserisca i numeri di pagina in automatico impostando l'allineamento "esterno".
Con la macro originale la stampa mi genera una sequenza tale per cui i numeri di pagina capitano "interni" cioè vicini alla mezzeria del foglio.

ciao
casi
Utente Junior
 
Post: 26
Iscritto il: 18/01/06 13:29

Re: Macro per stampa a libretto

Postdi Anthony47 » 04/03/08 14:27

Confermo che sulla mia stampante "il libretto" esce stampato regolarmente, e inoltre se guardo le pagine mandate in stampa (variabile QualiPag) su doc di 8 pagine esse sono: 8,1 e 6,3 per il Fronte e 2,7 e 4,5 per il Retro, in questo ordine.

Non so perche' sulla tua stampante escono come 1,8 / 3,6 etc; non hai mica una opzione per stampare in ordine inverso?
A questo punto ti chiederei di provare a mandare in stampa manualmente le pagine 8,1,2,7 su 2 colonne e con fronte/retro per vedere l' effetto che fa.

Quindi al momento confermo la macro postata il 25/02/08; ulteriori contributi sono benvenuti.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per stampa a libretto

Postdi casi » 05/03/08 09:22

Bho!
Mi sto perdendo.
Mandando in stampa manualmente le pagine che mi hai detto escono nello stesso ordine, cioè 8,1,2,7.

D'altra parte non ho trovato opzioni tra le proprietà di stampa per cui l'orine di uscita dovrebbe essere invertito. Anzi, l'opzione "Ordine di stampa" è flaggata proprio su "Dalla prima all'ultima".

Quindi?
Anch'io vorrei capire come mai, ma per ora mi ritengo soddisfatto e credo che quindi si possa confermare la macro del 25.2 come valida in generale.

ciao
casi
Utente Junior
 
Post: 26
Iscritto il: 18/01/06 13:29

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Macro per stampa a libretto":


Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti