Per salvare un intervallo selezionato in Excel (ad esempio una ricevuta) come PDF in Excel utilizzando VBA, utilizzare la sintassi seguente.

Il codice generico

Sub SaveRangeAsPDF()

Range.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Users\file_name", Quality:=xlQualityStandard, _

IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

Il codice sopra è un codice generico per salvare un intervallo fisso come documento PDF. Quando la tua macro di registrazione mentre esporti Excel in PDF, verrà visualizzato un codice simile.

Intervallo: * Può essere un intervallo fisso, un intervallo dinamico o una selezione. Devi definirlo.

Nome file: questo è il nome completo di pdf. Definiscilo come una stringa.

Il resto delle variabili può essere lasciato così com’è. Li ho spiegati dopo esempio.

Esempio: stampa una ricevuta Excel come PDF utilizzando VBA Supponiamo che tu debba stampare e inviare regolarmente ricevute in Excel. In tal caso, vorresti che fosse automatizzato. Non vorrai eseguire l’esportazione excel in pdf più e più volte. Se puoi usare solo un pulsante per farlo, sarebbe utile, non è vero?

Qui ho progettato questo formato di ricevuta. Voglio stamparlo / salvarlo / esportarlo come pdf usando il pulsante “Crea PDF”.

imageThis receipt covers the range “A2:L21”. I have already set the print area.

image

Per salvare su questo intervallo Excel come PDF, utilizzeremo il codice VBA generico sopra menzionato per esportare il foglio Excel in PDF. Regoleremo il codice secondo il nostro requisito.

Sub PrintSelectionToPDF()

Dim invoiceRng As Range

Dim pdfile As String

'Setting range to be printed

Set invoiceRng = Range("A1:L21")

'setting file name with a time stamp.

pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"

'setting the fulli qualified name. The resultent pdf will be saved where the main file exists.

pdfile = ThisWorkbook.Path & strfile

invoiceRng.ExportAsFixedFormat Type:=xlTypePDF, _

Filename:= pdfile, _

Quality:= xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=False

End Sub

Utilizzo del codice:

Copia il codice sopra nel file della ricevuta aprendo l’editor VBA (usa Alt + F11). Regola l’intervallo e il percorso del file (se lo desideri) nel codice che desideri stampare. Puoi scaricare il file di lavoro qui sotto.

`link: /wp-content-uploads-2019-12-Save-Excel-Range-as-PDF-using-VBA.xls [

image 48Save Excel Range as PDF using VBA]

Spiegazione:

Dim invoiceRng As Range

Dim pdfile As String

Il codice è semplice. Innanzitutto, abbiamo creato due variabili. “InvoiceRng as Range” per l’intervallo / foglio che vogliamo salvare come pdf. strFile per il nome file completo del PDF risultante.

Set invoiceRng = Range("A1:L21")

Poiché il nostro intervallo di stampa è fisso, impostiamo l’intervallo della fattura come Intervallo (“A1: L21”).

pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"

pdfile = ThisWorkbook.Path & strfile

Nelle due righe precedenti, chiamiamo prima il file con un timestamp e poi aggiungiamo al percorso del file principale. Di conseguenza, pdfile contiene il nome completo del file pdf risultante.

invoiceRng.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:= pdfile, _

Quality:= xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=True, _

OpenAfterPublish:=False

Infine, utilizziamo il metodo ExpoortAsFixedFormat della classe Range per stampare l’intervallo Excel definito come PDF. Definiamo il tipo come xlTypePDF. Un’altra scelta è xlTypeXPS, che salverà l’intervallo selezionato come file XPS.

Impostiamo il nome del file come pdfile, che contiene la stringa del nome completo del file pdf. Puoi scrivere un testo hardcoded qui o personalizzarlo secondo le tue necessità.

Successivamente, impostiamo la qualità del pdfile come xlQualityStandard. Abbiamo un’altra scelta come xlQualityMinimum.

Successivamente, impostiamo IncludeDocProperties come True. Significa che il PDF risultante avrà le proprietà di un documento.

Quindi impostiamo IgnorePrintAreas come True. Significa che ignorerà qualsiasi area di stampa già impostata.

Infine, impostiamo OpenAfterPublish come False. Significa che il file che crei non si aprirà automaticamente. L’ho impostato su falso perché creo centinaia di file usando un ciclo e non voglio che si aprano. Se desideri aprire il file dopo averlo creato utilizzando Excel, impostalo su True.

Utilizzo della stampa dell’intervallo selezionato come pdf

Un utilizzo di base è stampare l’intervallo selezionato facendo clic su un pulsante. Ma l’uso migliore è usarlo in un ciclo in cui è necessario creare più ricevute per diversi client. Crea un sottotitolo per riempire i dati e quindi usa questo codice per stampare l’intervallo selezionato in un ciclo.

Quindi sì ragazzi, è così che puoi salvare l’intervallo selezionato come pdf. Spero sia stato utile per te. Se hai ancora dubbi o domande sulla stampa in Excel utilizzando VBA, chiedi nella sezione commenti qui sotto.

Articoli correlati:

link: / printing-in-vba-print-all-workbooks-in-a-folder-using-vba-in-microsoft-excel [Stampa tutte le cartelle di lavoro in una cartella utilizzando VBA in Microsoft Excel] | Usa questo codice VBA per stampare e salvare ogni cartella di lavoro Excel in una cartella utilizzando.

Articoli popolari:

link: / general-topics-in-vba-split-excel-sheet-into-multiple-files-based-on-column-using-vba [Dividi il foglio Excel in più file in base alla colonna usando VBA] | Questo codice VBA ha suddiviso la base del foglio Excel su valori univoci in una colonna specificata.

Scarica il file di lavoro.

link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Disattiva i messaggi di avviso usando VBA in Microsoft Excel 2016] | Per disattivare i messaggi di avviso che interrompono il codice VBA in esecuzione, utilizziamo la classe Application.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Aggiungi e salva una nuova cartella di lavoro usando VBA in Microsoft Excel 2016] | Per aggiungere e salvare cartelle di lavoro utilizzando VBA utilizziamo la classe Cartelle di lavoro. Workbooks.Add aggiunge facilmente una nuova cartella di lavoro, tuttavia …​