Hai gia' la proposta low-tech /high-efficiency di w&g, piu' la bella proposta di Friederich; ne propongo una terza basata su un file di partenza e una macro.
In dettaglio...
Creati le prime due pagine del documento "utile" e inseriscici quegli elementi che ti interessano (intestazioni, pie' di pagina, filigrana,...)
Poi la macro PatelPrint si occupera' di:
-inserire ulteriori pagine fino ad arrivare al numero di pagine utili desiderate
-inserire una ulteriore pagina "dummy" senza header e senza footer e con la barra trasversare
-stampare una per una le N pagini utili accoppiandola alla pagina dummy
Su questa ultima parte tuttavia non sono certissimo del suo funzionamento, perche' bisogna impostare la stampante affinche' lavori in Duplex (fronte /Retro), ma non ho trovato il comando che imposta questa proprieta' tramite vba (ne' io ho una stampante duplex).
Prova a registrare una macro mentre, sulla tua stampante, mandi in esecuzione una
stampa fronte /retro e vedi se il relativo comando viene inserito; poi modifica di conseguenza l'istruzione Application.PrintOut (in fondo alla macro).
In alternativa mandi in
stampa su una stampante virtuale. Io ho usato pdfcreator; alla prima
stampa ho dato il comando "Metti in coda", quindi tutte le successive stampe sono andate in coda sulla stampante; alla fine ho fatto "Unisci tutti i documenti" e "
Stampa documento", ottenendo cosi' un file
pdf che contiene una pagina "utile" e una pagina barrata, fino alla fine delle pagine.
Se il risultato piace si manda in
stampa il file
pdf.
Ho fatto le prove sul file scaricabile qui:
https://www.dropbox.com/s/uh3m6j95arakw ... .docm?dl=0Il codice della Sub PatelPrint:
- Codice: Seleziona tutto
Sub PatelPrint()
Dim hHead As HeaderFooter, cSc As Long
Dim pWidth As Long, pLength As Long
Dim cPages As Long, totPages As Long
'
totPages = 20 '<<< Le pagini utili da stampare
'
'Controlla ci sia una sola Sezione:
cSc = ActiveDocument.Sections.Count
If cSc > 1 Then
MsgBox ("Il documento contiene piu' Sezioni, l'operazione non puo' essere completata")
Exit Sub
End If
'
cPages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
'agiunge nuove pagine per arrivare a totPages:
Selection.EndKey Unit:=wdStory
For i = 1 To totPages - cPages
Selection.InsertBreak Type:=wdPageBreak
Next i
'Aggiunge la pagina "dummy", in fondo:
Selection.EndKey Unit:=wdStory
Selection.InsertBreak Type:=wdPageBreak
Selection.InsertBreak Type:=wdSectionBreakContinuous
cSc = ActiveDocument.Sections.Count
'elimina Headerd e Footers dalla pagina Dummy:
If cSc = 2 Then
For Each hHead In ActiveDocument.Sections(cSc).Headers
hHead.LinkToPrevious = False
hHead.Range.Delete
Next hHead
For Each hHead In ActiveDocument.Sections(cSc).Footers
hHead.LinkToPrevious = False
hHead.Range.Delete
Next hHead
Else
'qui non dovremmo arrivarci...
MsgBox ("Il documento non contiene 2 Sezioni, l'operazione non puo' essere completata")
Exit Sub
End If
'Inserisce la linea trasversale e la formatta:
Dim nLine As Shape
pWidth = ActiveDocument.PageSetup.PageWidth
pLength = ActiveDocument.PageSetup.PageHeight
Set nLine = ActiveDocument.Shapes.AddLine(beginX:=pWidth * 0.15, beginy:=pLength * 0.15, endx:=pWidth * 0.85, endY:=pLength * 0.85)
nLine.Line.Weight = 3
nLine.Line.ForeColor = RGB(0, 0, 0)
Set nLine = Nothing
'Infine stampa ogni pagina con la Dummy:
For i = 1 To totPages
Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
wdPrintDocumentWithMarkup, Copies:=1, Pages:=i & "," & (totPages + 1), PageType:= _
wdPrintAllPages, Collate:=True, Background:=False, PrintToFile:=False, _
PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
Next i
MsgBox ("Stampa completata; chiudere il file SENZA SALVARLO...")
End Sub
La riga marcata <<< va compilata secondo commento; io per prova ho usato 20 pagine
Dopo l'esecuzione della macro suggerisco di non salvare il file, in modo da averlo disponibile per altre personalizzazioni.
Ciao