Gebruik onderstaande syntaxis om een geselecteerd bereik in Excel (bijvoorbeeld een ontvangstbewijs) op te slaan als PDF in Excel met VBA.
De generieke code
Sub SaveRangeAsPDF() Bereik.ExportAsFixedFormat Type:=xlTypePDF, Bestandsnaam:= _ "C:\Gebruikers\bestandsnaam", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub
Bovenstaande code is een generieke code om een vast bereik als pdf-document op te slaan. Wanneer uw recordmacro tijdens het exporteren uitblinkt naar PDF, verschijnt een vergelijkbare code.
Bereik:Dit kan een vast bereik, een dynamisch bereik of een selectie zijn. Je moet het definiëren.
Bestandsnaam: Dit is de volledig gekwalificeerde naam van pdf. Definieer het als een string.
De rest van de variabelen kun je laten zoals ze zijn. Ik heb ze naar voorbeeld uitgelegd.
Voorbeeld: Excel-bon als PDF afdrukken met VBA
Stel dat u regelmatig bonnen moet afdrukken en verzenden in Excel. In dat geval wil je het graag geautomatiseerd hebben. U wilt niet steeds opnieuw Excel naar pdf exporteren. Als je gewoon een knop kunt gebruiken om dit te doen, zou dat handig zijn, nietwaar?
Hier heb ik dit ontvangstformaat ontworpen. Ik wil het afdrukken/opslaan/exporteren als pdf met de knop "PDF maken".
Deze bon dekt het bereik "A2:L21". Ik heb het afdrukgebied al ingesteld.
Om dit Excel-bereik als PDF op te slaan, gebruiken we de bovengenoemde generieke VBA-code voor het exporteren van Excel-blad naar pdf. We zullen de code aanpassen aan onze vereisten.
Sub PrintSelectionToPDF() Dim factuurRng As Range Dim pdfile As String 'Instellingsbereik dat moet worden afgedrukt Stel factuurRng = Range("A1:L21") 'bestandsnaam in met een tijdstempel. pdfile = "factuur" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf" 'instelling van de volledige gekwalificeerde naam. De resulterende pdf wordt opgeslagen waar het hoofdbestand bestaat. pdfile = ThisWorkbook.Path & strfile factuurRng.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:= pdfile, _ Quality:= xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfter EndSubPublish:=False
De code gebruiken:
Kopieer de bovenstaande code in uw ontvangstbestand door de VBA-editor te openen (gebruik Alt+F11). Pas het bereik en het bestandspad aan (als je dat wilt) in de code die je wilt afdrukken. Hieronder kunt u het werkbestand downloaden.
Bewaar Excel-bereik als PDF met VBA
Uitleg:
Dim factuurRng As Range Dim pdfile As String
De code is eenvoudig. Eerst hebben we twee variabelen gemaakt. "InvoiceRng as Range" voor het bereik/blad dat we als pdf willen opslaan. strFile voor de volledig gekwalificeerde bestandsnaam van de resulterende PDF.
Stel factuurRng = Bereik ("A1:L21") in
Aangezien ons afdrukbereik vast is, stellen we het factuurbereik in op Bereik ("A1:L21").
pdfile = "factuur" & "_" & Format(Now(), "yyyymmdd_uummss") & ".pdf" pdfile = ThisWorkbook.Path & strfile
In de bovenstaande twee regels noemen we het bestand eerst met een tijdstempel en voegen we het vervolgens toe aan het pad van het hoofdbestand. Als gevolg hiervan bevat pdfile de volledig gekwalificeerde naam van het resulterende pdf-bestand.
factuurRng.ExportAsFixedFormat _ Type:=xlTypePDF, _ Bestandsnaam:= pdfile, _ Kwaliteit:= xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=True, _ OpenAfterPublish:=False
Ten slotte gebruiken we de ExpoortAsFixedFormat-methode van de klasse Range om het gedefinieerde Excel-bereik als PDF af te drukken. We definiëren type als xlTypePDF. Een andere keuze is xlTypeXPS, waarmee het geselecteerde bereik als XPS-bestand wordt opgeslagen.
We stellen de Bestandsnaam in als pdfile, die de string van de volledig gekwalificeerde naam van het pdf-bestand bevat. U kunt hier een hardgecodeerde tekst schrijven of deze naar wens aanpassen.
Vervolgens stellen we de kwaliteit van het pdf-bestand in op xlQualityStandard. We hebben een andere keuze als xlQualityMinimum.
Vervolgens stellen we de IncludeDocProperties in op True. Het betekent dat de resulterende PDF de eigenschappen van een document zal hebben.
Vervolgens stellen we de IgnorePrintAreas in op True. Dit betekent dat het elk reeds ingesteld afdrukgebied negeert.
Ten slotte stellen we OpenAfterPublish in op False. Dit betekent dat het bestand dat u aanmaakt niet automatisch wordt geopend. Ik heb het op false gezet omdat ik honderden bestanden maak met een lus en ik niet wil dat ze worden geopend. Als u het bestand wilt openen nadat u het met Excel hebt gemaakt, stelt u het in op True.
Gebruik van het afdrukken van het geselecteerde bereik als pdf
Een basisgebruik is om het geselecteerde bereik af te drukken door slechts op één knop te klikken. Maar het beste is om het in een lus te gebruiken waarbij u meerdere bonnen voor verschillende klanten moet maken. Maak een sub voor het invullen van gegevens en gebruik vervolgens deze code om het geselecteerde bereik in een lus af te drukken.
Dus ja jongens, zo kun je het geselecteerde bereik opslaan als pdf. Ik hoop dat het nuttig voor je was. Als je nog steeds twijfels of vragen hebt over afdrukken in Excel met VBA, vraag het dan in de opmerkingen hieronder.
Meerdere selecties op één blad afdrukken met VBA in Microsoft Excel | Selecteer meerdere bereiken en druk elk bereik in een ander blad af met VBA.
Druk alle werkmappen in een map af met VBA in Microsoft Excel | Gebruik deze VBA-code om elke Excel-werkmap in een map af te drukken en op te slaan.
Populaire artikels:
Excel-blad splitsen in meerdere bestanden op basis van kolom met behulp van VBA | Deze VBA-code splitst Excel-blad op basis van unieke waarden in een opgegeven kolom. Download het werkbestand.
Schakel waarschuwingsberichten uit met VBA in Microsoft Excel 2016 | Om waarschuwingsberichten uit te schakelen die de actieve VBA-code onderbreken, gebruiken we de klasse Application.
Nieuwe werkmap toevoegen en opslaan met VBA in Microsoft Excel 2016 | Om werkmappen toe te voegen en op te slaan met VBA gebruiken we Workbooks class. Workbooks.Add voegt eenvoudig een nieuwe werkmap toe, maar…