Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Stampa dinamica con numerazione fogli

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

Stampa dinamica con numerazione fogli

Postdi BG66 » 30/10/18 18:31

Ciao a tutti,
al momento lanciando la stampa ho come risultato 3 fogli stampati e in colonna G il testo "Foglio 1 di 3", etc.
Vorrei invece stampare solamente i fogli che presentano dei nomi nel campo nominativo e averela dicitura del numero di fogli dinamica ( nell'esempio il dato atteso è un solo foglio stampato e la dicitura" Foglio 1 di 1".

https://www.dropbox.com/s/x0a9cwrb8nknht9/stampa%20dinamica_forum.xlsm?dl=0

Grazie per l'aiuto

Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 209
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: Stampa dinamica con numerazione fogli

Postdi Anthony47 » 30/10/18 23:07

Con questa macro puoi comandare la stampa delle sole pagine che hanno dei nominativi inseriti:
Codice: Seleziona tutto
Sub PrPRArea()
Dim myNom, I As Long, cPag As Long, Beg As Long
Beg = 1
For I = 1 To 10
    myNom = Application.Match("Nominativo", Cells(myNom + 1, "B").Resize(100, 1), False)
    If IsError(myNom) Then Exit For
    If Len(Cells(Beg + myNom, "B")) > 2 Then
        cPag = cPag + 1
        Beg = Beg + myNom
    Else
        Exit For
    End If
Next I
Range("L1") = cPag
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=cPag, Copies:=1, _
        Collate:=True, IgnorePrintAreas:=False
End Sub

Per mia semplificazione la macro inserisce in L1 il numero di pagine da stampare, in modo che puoi modificare i contenuti di G2, G52 etc con una formula come questa:
Codice: Seleziona tutto
="foglio 1 di "&L1

In tal modo le scritte si adatteranno alla stampa.

L'individuazione delle pagine da stampare e' fatta esaminando la cella sottostante l'intestazione "Nominativo"; questo presuppone che le scritte compaiano subito dopo l'intestazione, senza righe vuote.
Il numero di pagine non e' limitato a 3, visto che la macro cerca fino alla "Ultima intestazione" disponibile.

La macro stampa sulla stampante di default; se vuoi inserire la scelta della stampante, aggiungi in testa
Codice: Seleziona tutto
'scegli printer
SelPrint = Application.Dialogs(xlDialogPrinterSetup).Show
If SelPrint = False Then
    MsgBox "Stampa Cancellata"
    Exit Sub
End If


Volendo forzare l'uso esclusivamente della macro per stampare quel foglio, potresti aggiungere, nel Modulo QuestaCartellaDiLavoro:
Codice: Seleziona tutto
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Sheets.Name = "Report" Then
    Call PrPRArea
    Cancel = True
End If
End Sub


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

Re: Stampa dinamica con numerazione fogli

Postdi BG66 » 31/10/18 09:54

Ciao Anthony,
tutto ok..tranne:

Volendo forzare l'uso esclusivamente della macro per stampare quel foglio, potresti aggiungere, nel Modulo QuestaCartellaDiLavoro


Il debug non gradisce:
Immagine

https://www.dropbox.com/s/jj2rndsvih6m21k/stampa%20dinamica_forum%20By%20Anthony.xlsm?dl=0

Attendo tue per capire il perchè.

Grazie in anticipo.

Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 209
Iscritto il: 20/08/16 07:44

Re: Stampa dinamica con numerazione fogli

Postdi Anthony47 » 31/10/18 20:01

E' che l'evento BeforePrint l'ho proprio gestito male

Modifica quel codice in
Codice: Seleziona tutto
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If OGPr = False And ActiveSheet.Name = "Report" Then
    Cancel = True
    MsgBox ("Usa il pulsante STAMPA")
Else
    OGPr = False
End If
End Sub


Pero' devi anche
a) inserire in testa al modulo della Sub PrPRArea la dichiarazione di una variabile Public:
Codice: Seleziona tutto
Public OGPr As Boolean

b) aggiungere questa istruzione in questa posizione:
Codice: Seleziona tutto
Range("L1") = cPag
OGPr = True                        'AGGIUNGERE QUESTA
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=cPag, Copies:=1, _
        Collate:=True, IgnorePrintAreas:=False

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

Re: Stampa dinamica con numerazione fogli

Postdi BG66 » 01/11/18 06:19

[RISOLTO]
Grazie Anthony...è perfetto.

Alla prossima.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 209
Iscritto il: 20/08/16 07:44


Torna a Applicazioni Office Windows


Topic correlati a "Stampa dinamica con numerazione fogli":


Chi c’è in linea

Visitano il forum: Nessuno e 25 ospiti