Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro che stampa ogni valore presente nella pivot su format

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 che stampa ogni valore presente nella pivot su format

Postdi basolla » 18/06/11 09:28

Buongiorno a tutti,

sono a chiedervi il vostro aiuto per il seguente problema.
Struttura foglio Excel:
- foglio 1: database di spedizioni con destinatario, via, cap, kg, colli ecc. con diversi mittenti per stesso destinatario
- foglio 2: format con immagini, intestazioni standard, ecc. in cui al centro c'è posizionata una pivot che pesca dal foglio 1 e mi riepiloga per stesso destinatario quali mittenti, kg, colli ecc. vengono spediti.

il mio obbiettivo è creare una macro che mi carichi per ogni destinatario (sono circa 100) la sua tabella pivot del foglio 2, e la mandi in stampa (all'interno del format).
Intendo quindi che escano automaticamente 100 stampe.

Qualcuno mi saprebbe aiutare?

Grazie mille
Riccardo
basolla
Newbie
 
Post: 5
Iscritto il: 18/06/11 09:17

Sponsor
 

Re: Macro che stampa ogni valore presente nella pivot su for

Postdi ricky53 » 18/06/11 21:10

Ciao,
prima di tutto BENVENUTO nel nostro forum.

Prova con il registratore di macro ad eseguire l'operazione di scelta, nella pivot, del nome da stampare e fai una stampa, fermato ilregistratore di macro occorre inserire un ciclo For/Next per stampare:
A) più volte con scelta del nome per ogni stampa
oppure
B) stampare automaticamente tutti i nomi presenti nell'elenco

Sai utilizzare il VBA ?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro che stampa ogni valore presente nella pivot su for

Postdi Anthony47 » 19/06/11 16:13

Ciao basolla, benvenuto anche da parte mia.
Prova come suggerito da Ricky (vedi sopra), poi posta il codice ottenuto insieme con uno screenshot del foglio2.
In pratica, partendo da Foglio1:
-avvia il registratore macro (Menu /Strumenti /Macro /Registra nuova macro)
-seleziona Foglio2
-aggiorna la tabella pivot (tasto dx, Aggiorna dati)
-seleziona dalla testata della pivot un destinatario tra quelli elencati (diverso da quello elencato precedentemente)
-mandi in stampa
-fermi la registrazione (Menu /Strumenti /Macro /Interrompi registrazione)

Poi fai Alt-F8, selezioni il nome della macro appena creata, premi Modifica; ti si apre l' editor delle macro; copia il codice generato e incollalo nel testo del tuo messaggio. Se ci sono parole che vuoi eliminare ricoprile con xxxxx, senza alterare la sintassi del listato.

Ciao, ti aspettiamo.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro che stampa ogni valore presente nella pivot su for

Postdi basolla » 19/06/11 21:26

Ciao grazie a entrambi per la spiegazione molto dettagliata. Mi sono dimenticato di dire che ho una buona esperienza su excel ma sono alle prime armi di VBA. Di cicli for/next non ne ho mai utilizzati, ma è quello che pensavo fosse la soluzione.
quello che voglio fare è poi la B) stampare automaticamente tutti i nomi presenti nell'elenco.

Ecco la macro registrata:

Sheets("BORDERAUX RIEPILOGATIVO").Select
Range("C22").Select
ActiveSheet.PivotTables("Tabella_pivot2").PivotCache.Refresh
With ActiveSheet.PivotTables("Tabella_pivot2").PivotFields("Destinatario")
.PivotItems("UNICOOP TIRRENO").Visible = True
.PivotItems("TECHINT(POMINI)").Visible = False
End With
Range("C28").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

Grazie per l'aiuto nell'inserire il CICLO.

Ciao
Riccardo
basolla
Newbie
 
Post: 5
Iscritto il: 18/06/11 09:17

Re: Macro che stampa ogni valore presente nella pivot su for

Postdi Anthony47 » 19/06/11 22:40

Prova sostituendo il tuo codice con questo:
Codice: Seleziona tutto
Sheets("BORDERAUX RIEPILOGATIVO").Select
Range("C22").Select
ActiveSheet.PivotTables("Tabella_pivot2").PivotCache.Refresh
With ActiveSheet.PivotTables("Tabella_pivot2").PivotFields("Destinatario")
'
  For I = 1 To .PivotItems.Count
   .PivotItems(1).Visible = True
   If I > 1 Then .PivotItems(I).Visible = False
  Next I
  For I = 1 To .PivotItems.Count
   .PivotItems(I).Visible = True
   If I > 1 Then .PivotItems(I - 1).Visible = False
   Range("C28").Select
   ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
  Next I
End With
'
End Sub

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro che stampa ogni valore presente nella pivot su for

Postdi basolla » 21/06/11 09:12

Grazie mille. funziona tutto perfettamente.
Ho dovuto cambiare qualcosa nel format a causa della pivot che si aggiorna con due destinatari prima di fare sparire il precedente, per cui mi andava a sovrascrivere alcune scritte sotto. Ma le ho spostate di qualche riga più in basso.

Grazie ancora
Ciao
basolla
Newbie
 
Post: 5
Iscritto il: 18/06/11 09:17

Re: Macro che stampa ogni valore presente nella pivot su for

Postdi basolla » 28/07/11 11:13

Ciao a tutti,

ho provato a cambiare il campo che guida la macro (al posto di desinazione ho messo il nome del destinatario) e la macro non mi funziona. Riporta l'errore di runtime 1004: Impossibile impostare la proprietà Visible per la classe PivotItem.

Qualcuno mi aiuta?

'
Sheets("BORDERAUX RIEPILOGATIVO").Select
Range("C22").Select
ActiveSheet.PivotTables("Tabella_pivot2").PivotCache.Refresh
With ActiveSheet.PivotTables("Tabella_pivot2").PivotFields("DESTINAZIONE")
'
For I = 1 To .PivotItems.Count
.PivotItems(1).Visible = True
If I > 1 Then .PivotItems(I).Visible = False
Next I
For I = 1 To .PivotItems.Count
.PivotItems(I).Visible = True
If I > 1 Then .PivotItems(I - 1).Visible = False
Range("C28").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next I
End With
'
End Sub
basolla
Newbie
 
Post: 5
Iscritto il: 18/06/11 09:17

Re: Macro che stampa ogni valore presente nella pivot su for

Postdi Anthony47 » 28/07/11 13:09

Procedi come ti avevo suggerito qui: viewtopic.php?f=26&t=91996&p=527388#p525113

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro che stampa ogni valore presente nella pivot su for

Postdi basolla » 28/07/11 15:46

Ecco il codice generato seguendo le istruzioni della scorsa volta:


Sheets("BORDERAUX RIEPILOGATIVO").Select
Range("C21").Select
ActiveSheet.PivotTables("Tabella_pivot2").PivotCache.Refresh
With ActiveSheet.PivotTables("Tabella_pivot2").PivotFields("DESTINAZIONE")
.PivotItems("IVECO 4 SPA").Visible = True
.PivotItems("IVECO 5 SPA").Visible = False
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
basolla
Newbie
 
Post: 5
Iscritto il: 18/06/11 09:17

Re: Macro che stampa ogni valore presente nella pivot su for

Postdi Anthony47 » 29/07/11 01:05

Dalla registrazione deduco che la macro che avevi elaborato era concettualmente e tecnicamente corretta.
Quando i campi usati come input per una tabella pivot vengono modificati e' possibile che rimangano memorizzate delle voci non piu' presenti nei dati, credo sia quello che e' successo nel tuo caso: cliccando sulla freccina di scelta dovresti vedere delle voci che nella tua pivot complessiva mancano (probabilmente ti ritrovi ancora tutte le voci "Destinatario").
Prova inserendo subito dopo " Sheets("BORDERAUX RIEPILOGATIVO").Select" queste istruzioni, che ripuliscono tutte le tabelle del tuo file:
Codice: Seleziona tutto
On Error Resume Next
    For Each WkSh In Worksheets
    For Each PvtTable In WkSh.PivotTables
    For Each PvtField In PvtTable.PivotFields
    For Each PvtItem In PvtField.PivotItems
    PvtItem.Delete
    Next: Next: Next: Next

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Macro che stampa ogni valore presente nella pivot su format":


Chi c’è in linea

Visitano il forum: Zer0Kelvin e 14 ospiti