Condividi:        

Excel 2010 - Macro per creare PDF

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

Excel 2010 - Macro per creare PDF

Postdi S+E » 26/04/16 10:00

Ciao a tutti.
Vorrei chiedere un aiuto per automatizzare la stampa di un foglio Excel.

Il file che ho creato serve a calcolare le ore accumulate in "Banca ore" dai miei colleghi.
E' strutturato su 12 fogli in modo che la situazione venga aggiornata mensilmente.

Ho creato un 13esimo foglio che ho chiamato "Riepilogo", che fantasia :D , dove ho riportato i dati riepilogativi dei vari mesi.
In colonna A c'è una sequenza numerica: 1,2,3,4 ecc.
In colonna B il nome del collega, in colonna C il cognome, in colonna D l'ufficio presso cui lavora, nelle colonne da E a AB dettagli relativi ai vari mesi, nelle colonne AC e AD il saldo delle ore della "Banca ore".

Quello che vorrei fare è creare una macro (a cui associare un pulsante per eseguirla) che crei vari fogli PDF uno per ogni ufficio (colonna D) e che riporti soltanto i dati presenti nelle colonne B, C, AC e AD.

Potreste darmi una mano?
S+E
Win7 + Office 2010 Ita
S+E
Utente Junior
 
Post: 10
Iscritto il: 26/04/16 09:27

Sponsor
 

Re: Excel 2010 - Macro per creare PDF

Postdi ricky53 » 26/04/16 14:11

Ciao,
ci provo ma tu controlla bene gli intervalli che ho utilizzato per la stampa, il filtro e ... altri due occhi fanno sicuramente bene.

Codice: Seleziona tutto
Sub Stampa_in_PDF_per_Ufficio()
    Dim I As Integer, UR As Integer, Chiave As String, Percorso As String, Scritti As Integer

    Application.ScreenUpdating = False
    Sheets("Foglio1").Select
   
    Percorso = ActiveWorkbook.Path
    UR = Range("A" & Rows.Count).End(xlUp).Row
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("D2:D" & UR) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("A1:AD" & UR)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveSheet.PageSetup.PrintArea = "$B$1:$AD$" & UR
    Range("E:AB").EntireColumn.Hidden = True

    Scritti = 0
    Chiave = Cells(2, "D")
    For I = 3 To UR + 1
        If Cells(I, "D") <> Chiave Then
            ActiveSheet.Range("$A$1:$AD$" & UR).AutoFilter Field:=1, Criteria1:=Chiave
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                Percorso & "\Ufficio_" & Chiave & "_" & Format(Date, "YYYY-MM-DD") & ".pdf", Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
                False
            Scritti = Scritti + 1
            Chiave = Cells(I, "D")
            Selection.AutoFilter
        End If
    Next I
    Application.ScreenUpdating = True
    Cells.EntireColumn.Hidden = False
    Range("A1").Select
    MsgBox "Elaborazione conclusa. Sono stati prodotti:  " & Scritti & "  file PDF", vbInformation
End Sub
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel 2010 - Macro per creare PDF

Postdi S+E » 27/04/16 09:34

Grazie mille Ricky.

Ho provato la tua macro.

Mi produce i file in PDF.
Solo che non appaiono al loro interno i dati presenti nel foglio di riepilogo.

Stamattina me la studio un po' e vedo se riesco a venirne a capo.

Grazie ancora. :)
S+E
Win7 + Office 2010 Ita
S+E
Utente Junior
 
Post: 10
Iscritto il: 26/04/16 09:27

Re: Excel 2010 - Macro per creare PDF

Postdi S+E » 27/04/16 14:51

Ho risolto.

In realtà il problema non era, come pensavo, che la macro non riportava i dati, ma che i dati non erano in prima pagina.

Infatti il foglio aveva delle interruzioni di pagina, dovute a precedenti prove fatte dal sottoscritto.

Ho inserito nella macro il codice seguente:

Codice: Seleziona tutto
ActiveSheet.ResetAllPageBreaks


Così in quello specifico foglio vengono eliminate le interruzioni di pagina, nel caso qualcuno le inserisse a mia insaputa.

Inoltre ho aggiunto all'inizio e alla fine i seguenti codici:
Codice: Seleziona tutto
ActiveSheet.Unprotect

e
Codice: Seleziona tutto
ActiveSheet.Protect


Infatti ho voluto proteggere il foglio, per evitare improvvide manomissioni.
Solo che con il foglio protetto la macro non girava.
La prima istruzione serve per eliminare la protezione del foglio al momento dell'esecuzione della macro.
La seconda serve per proteggerlo nuovamente alla fine dell'esecuzione.

Grazie di tutto.
Siete preziosissimi!!! :)
S+E
Win7 + Office 2010 Ita
S+E
Utente Junior
 
Post: 10
Iscritto il: 26/04/16 09:27


Torna a Applicazioni Office Windows


Topic correlati a "Excel 2010 - Macro per creare PDF":


Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti