Enregistrer Excel Range en PDF en utilisant VBA
Pour enregistrer une plage sélectionnée dans Excel (par exemple un reçu) au format PDF dans Excel à l’aide de VBA, utilisez la syntaxe ci-dessous.
Le code générique
Sub SaveRangeAsPDF() Range.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\Users\file_name", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub
Le code ci-dessus est un code générique pour enregistrer une plage fixe en tant que document PDF. Lorsque votre macro d’enregistrement pendant que vous exportez Excel au format PDF, un code similaire apparaîtra.
Plage: * Il peut s’agir d’une plage fixe, d’une plage dynamique ou d’une sélection. Vous devez le définir.
Nom de fichier: il s’agit du nom complet du pdf. Définissez-le comme une chaîne.
Le reste des variables peut être laissé tel quel. Je les ai expliqués après exemple.
Exemple: Imprimer un reçu Excel au format PDF à l’aide de VBA Supposons que vous deviez imprimer et envoyer régulièrement des reçus dans Excel. Dans ce cas, vous souhaitez qu’il soit automatisé. Vous ne voudriez pas refaire l’exportation au format pdf encore et encore. Si vous pouvez simplement utiliser un bouton pour le faire, ce serait utile, n’est-ce pas?
Ici, j’ai conçu ce format de reçu. Je souhaite l’imprimer / le sauvegarder / l’exporter au format pdf en utilisant le bouton « Créer PDF ».
This receipt covers the range « A2:L21 ». I have already set the print area.
Pour économiser sur cette gamme Excel au format PDF, nous utiliserons le code VBA générique mentionné ci-dessus pour exporter une feuille Excel au format PDF. Nous ajusterons le code selon nos exigences.
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
Utilisation du code:
Copiez le code ci-dessus dans votre fichier de reçu en ouvrant l’éditeur VBA (utilisez Alt + F11). Ajustez la plage et le chemin du fichier (si vous le souhaitez) dans le code que vous souhaitez imprimer. Vous pouvez télécharger le fichier de travail ci-dessous.
`lien: /wp-content-uploads-2019-12-Save-Excel-Range-as-PDF-using-VBA.xls [
Save Excel Range as PDF using VBA]
Explication:
Dim invoiceRng As Range Dim pdfile As String
Le code est simple. Tout d’abord, nous avons créé deux variables. « InvoiceRng as Range » pour la plage / feuille que nous voulons enregistrer au format pdf. strFile pour le nom de fichier complet du PDF résultant.
Set invoiceRng = Range("A1:L21")
Étant donné que notre plage d’impression est fixe, nous définissons la plage de facturation comme Plage (« A1: L21 »).
pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf" pdfile = ThisWorkbook.Path & strfile
Dans les deux lignes ci-dessus, nous nommons d’abord le fichier avec un horodatage, puis nous ajoutons au chemin du fichier principal. En conséquence, pdfile contient le nom complet du fichier pdf résultant.
invoiceRng.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:= pdfile, _ Quality:= xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=True, _ OpenAfterPublish:=False
Enfin, nous utilisons la méthode ExpoortAsFixedFormat de la classe Range pour imprimer la plage Excel définie au format PDF. Nous définissons le type comme xlTypePDF. Un autre choix est xlTypeXPS, qui enregistrera la plage sélectionnée en tant que fichier XPS.
Nous définissons le nom de fichier comme pdfile, qui contient la chaîne du nom complet du fichier pdf. Vous pouvez écrire un texte codé en dur ici ou le personnaliser selon vos besoins.
Ensuite, nous définissons la qualité du fichier pdf comme xlQualityStandard. Nous avons un autre choix comme xlQualityMinimum.
Ensuite, nous définissons le IncludeDocProperties sur True. Cela signifie que le PDF résultant aura les propriétés d’un document.
Ensuite, nous définissons IgnorePrintAreas sur True. Cela signifie qu’il ignorera toute zone d’impression déjà définie.
Enfin, nous définissons OpenAfterPublish sur False. Cela signifie que le fichier que vous créez ne s’ouvrira pas automatiquement. Je l’ai défini sur false car je crée des centaines de fichiers en utilisant une boucle et je ne veux pas qu’ils s’ouvrent. Si vous souhaitez ouvrir le fichier après la création à l’aide d’Excel, définissez-le sur True.
Utilisation de l’impression de la plage sélectionnée au format pdf
Une utilisation de base consiste à imprimer la gamme sélectionnée en cliquant simplement sur un bouton. Mais la meilleure utilisation est de l’utiliser dans une boucle où vous devez créer plusieurs reçus pour différents clients. Créez un sous pour remplir les données, puis utilisez ce code pour imprimer la plage sélectionnée dans une boucle.
Alors oui les gars, voici comment enregistrer la plage sélectionnée au format PDF. J’espère que cela vous a été utile. Si vous avez encore des doutes ou des questions concernant l’impression dans Excel en utilisant VBA, demandez dans la section commentaires ci-dessous.
Articles liés:
lien: / printing-in-vba-print-all-workbooks-in-a-folder-using-vba-in-microsoft-excel [Imprimer tous les classeurs d’un dossier en utilisant VBA dans Microsoft Excel]
| Utilisez ce code VBA pour imprimer et enregistrer chaque classeur Excel dans un dossier à l’aide de.
Articles populaires:
lien: / general-topics-in-vba-split-excel-sheet-into-multiple-files-based-on-column-using-vba [Diviser la feuille Excel en plusieurs fichiers basés sur la colonne en utilisant VBA]
| Cette feuille Excel fractionnée par code VBA est basée sur des valeurs uniques dans une colonne spécifiée.
Téléchargez le fichier de travail.
lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016]
| Pour désactiver les messages d’avertissement qui interrompent l’exécution du code VBA, nous utilisons la classe Application.
link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur en utilisant VBA dans Microsoft Excel 2016]
| Pour ajouter et enregistrer des classeurs à l’aide de VBA, nous utilisons la classe Workbooks. Workbooks.Add ajoute facilement un nouveau classeur, cependant …