Macro per impostare pagina e salvare foglio in PDF

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
Pierlu70
00venerdì 26 febbraio 2016 10:58
Buongiorno a tutti, sto muovendo i miei primi passi con il VBA, e ho già ricorso al vostro gentilissimo aiuto.
Sto lavorando ad un documento di gestione di magazzino, allego il file di esempio, ed ho la necessità di una macro per salvare una copia del foglio in pdf.
Ho indagato sui Threads già pubblicati e alcuni mi sono tornati utilissimi per redigere la macro, il problema è nell'impaginazione del pdf.
Il nome del pdf è composto dal nome del foglio attivo e dai valori delle celle E2 e K2 separate da "_" e "_R"
Siccome sono presenti molte colonne, ho la necessità di impaginare il documento con tutte le colonne su foglio orizzontale.
Con il registratore di macro ho selezionato layout di pagina e larghezza 1 pagina ed ho inserito il codice ricavato nella macro.
Ho provato e riprovato a spostarlo e a cambiarlo in mille modi, ma non riesco a scrivere la giusta grammatica e così il pdf risulta sempre impaginato male.
Oltre che nel file allegato, riporto di seguito il codice sul quale sto lavorando.
Ringrazio in anticipo chi avrà la pazienza di aiutarmi.


Sub SALVA_COPIA_PDF()
'
'salva nella cartella origine con nome del foglio e celle E2 e K2 separate da "_" e "_R"
With ActiveWorkbook
If .Path = "" Then Exit Sub
pdfFile = .Path & "\" & ActiveSheet.Name & "_" & [E2] & "_R" & [K2] & ".pdf"
'
End With
'
'Imposta la pagina con layout di stampa: tutte le colonne su un unico foglio A4 orizzontale e salva pdf
ActiveWindow.View = xlPageLayoutView
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
.Orientation = xlLandscape
.PaperSize = xlPaperA4
End With
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFile _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

' Torna alla visualizzazione del layout di pagina normale
ActiveWindow.View = xlNormalView
End Sub
Berna11
00venerdì 26 febbraio 2016 17:57

Siccome sono presenti molte colonne, ho la necessità di impaginare il documento con tutte le colonne su foglio orizzontale.


Per me la tua macro fa quello che chiedi.
A meno che non intenda invece di vedere nel pdf in orizzontale lo vuoi vedere in verticale.
In tal caso ripeti la registrazione usando la stampa in verticale.
Pierlu70
00venerdì 26 febbraio 2016 18:30
Buona sera Berna,
eppure, se faccio girare la macro, mi salva un file pdf con le colonne frammentate su più fogli, precisamente su 4 fogli.
Invece se stampo, con le condizioni di layout di pagina larghezza 1 pagina, riesco a condensare tutte le colonne in un foglio, ma con la macro proprio non mi viene...
Sto provando a spostare il codice e a cambiare la grammatica, ma non essendo pratico, mi sono super incasinato con i miei tentativi [SM=x423021]
Berna11
00venerdì 26 febbraio 2016 18:59
Questo il file che esce a me con la tua macro.
Pierlu70
00sabato 27 febbraio 2016 15:49
Funziona a tratti.
Ciao Berna,
intanto grazie della tua verifica!!!!
Mistero...
Dopo aver visto il tuo file pdf, ho ripreso la macro postata e prima di pranzo la stessa macro non mi salvava pdf in maniera corretta, ora funziona anche a me!
Forse la versione del sistema operativo... chissà.
Ora faro un po di test!
Grazie comunque!!!!
Pierlu70
00martedì 1 marzo 2016 14:55
Svelato il mistero
Per chiudere la discussione riporto cosa non mi funzionava: il programma salva alcune impostazioni con il singolo foglio elettronico, in particolare le impostazioni di layout di pagina.
Quindi, selezionato il foglio di interesse, nella tendina Layout di pagina, sezione adatta alla pagina, è necessario selezionare la voce larghezza "1 pagina" e altezza "automatico", quindi salvare il file.
A questo punto le impostazioni rimangono memorizzate e la Macro Funziona.
Sembra una cosa banale, ma per chi non ha esperienza come me, diventa una vera complicazione!!!
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 02:46.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com