Tabbladen opslaan als PDF
Een Excel file is handig maar als je dit uiteindelijk wilt doorsturen is een PDF bestand iets netter. Nu heeft Excel een handige optie ingebouwd waarmee je een tabblad kan opslaan als PDF bestand of je kan de macro gebruiken voor het opslaan als PDF, opgelost zou je zeggen.
Maar wat nu als je een bestand hebt met heel veel tabbladen die je allemaal in wilt opslaan als PDF? Dan mag je genoeg tijd vrijmaken want dat is erg veel werk.
Heel toevallig vertel ik jullie in dit artikel hoe je dat met een macro kan doen. Dit scheelt erg veel tijd.
Als je nog niet weet hoe je een macro toevoegt, dan kan je hier kijken.
Vooraf is het handig om te weten hoe je het Ontwikkelaars tabblad krijgt en hoe je een macro toevoegt.
Video
Tabbladen opslaan als PDF
Om deze optie goed te maken, gaan we eerst een code toevoegen. Open de VBA editor, sneltoets ALT + F11, en maak daar een nieuwe Module aan. Plak daar de volgende code:
Sub PDF()
Pad = "C:\Users\Nick\Desktop\test\"
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "Voorblad" Then
If Dir(Pad & sh.Name & ".pdf") <> "" Then
MsgBox "Het bestand: " & sh.Name & ".pdf bestaat reeds"
Else
sh.ExportAsFixedFormat 0, Pad & sh.Name, , , , , OpenAfterPublish:=False
End If
End If
Next sh
End Sub
Vervolgens gaan we hier een ActiveX besturingselement voor aanmaken. Ga op het lint naar het tabblad Ontwikkelaars, selecteer hier Invoegen en kies voor knop.
Koppel hier de zojuist aangemaakte module TabbladPDF aan.
Deze macro slaat elk tabblad op behalve als bladen waar F8 leeg is en tabblad met de naam Voorblad.
Alle bestanden die worden opgeslagen krijgen de naam die het werkblad heeft.
Wel moet je voor dat je deze macro gebruikt het pad nog wijzigen, dit geeft aan waar de bestanden opgeslagen worden.
Hopelijk bespaart je dit veel werk!
Hoi Excelweb,
Bedankt voor de handige tips+code. Vraagje, is het ook mogelijk om de individuele PDFs ook een andere bestandsnaam te geven (bijvoorbeeld de tekst uit een cel in een sheet) i.p.v. de naam van het tabblad zelf?
De naam van het tabblad mag namelijk een maximaal aantal karakters hebben; dit aantal is niet voldoende voor mijn doeleinde.
Hopelijk kunnen jullie helpen.
Groet,
Ronald
Hieronder de aangepaste code, zodat je de individuele PDF’s een andere bestandsnaam kunt geven op basis van de tekst uit een cel in een sheet.
Om dit te doen, moet je de cel bepalen waarin de gewenste bestandsnaam staat en deze vervolgens gebruiken bij het exporteren van de PDF. Hier is de aangepaste code:
Sub PDF()
Dim Pad As String
Dim bestandsnaam As String
Pad = “C:\Users\Nick\Desktop\test\”
For Each sh In ThisWorkbook.Sheets
If sh.Name <> “Voorblad” Then
‘ Bepaal de gewenste bestandsnaam uit een cel in het sheet
bestandsnaam = sh.Range(“A1”).Value ‘ Pas “A1” aan naar de cel waar de bestandsnaam staat
If bestandsnaam = “” Then
MsgBox “Er is geen bestandsnaam opgegeven in ” & sh.Name & “. De PDF wordt niet gemaakt.”
ElseIf Dir(Pad & bestandsnaam & “.pdf”) <> “” Then
MsgBox “Het bestand: ” & bestandsnaam & “.pdf bestaat reeds”
Else
sh.ExportAsFixedFormat 0, Pad & bestandsnaam, , , , , OpenAfterPublish:=False
End If
End If
Next sh
End Sub
Hier wordt de variabele bestandsnaam gebruikt om de gewenste bestandsnaam voor elke sheet op te halen vanuit een specifieke cel (in dit geval “A1”). Je kunt de verwijzing naar de cel aanpassen door de juiste celreferentie te gebruiken, bijvoorbeeld “B2” als de bestandsnaam in cel B2 staat. Als er geen bestandsnaam in de cel staat, wordt een foutmelding weergegeven en wordt geen PDF gemaakt voor dat specifieke tabblad.
Zorg ervoor dat de cel met de bestandsnaam voor elke sheet is ingevuld voordat je de macro uitvoert.
Beste….
Ik wil graag een excel tabblad opslaan als PDF met een vaste naam uit cel waarde S7. Echter is S7 een samengevoegde tekst formule. Daarbij wil ik wel de naam automatisch laten gebruiken maar de bestand locatie wel kunnen kiezen. Dit omdat bestand door meerdere gebruikt gaat worden die het bestand ergens anders willen opslaan. Kan iemand mij hiermee helpen? Ik gebruik windows
Met vriendelijke groet Bas
Hieronder de aangepaste code, zodat je het Excel-tabblad kunt opslaan als PDF met een vaste naam uit cel S7, terwijl je nog steeds de bestandslocatie kunt kiezen voordat je het opslaat.
Code:
Sub PDF()
Dim Pad As String
Dim bestandsnaam As String
Dim sh As Worksheet
‘ Kies de bestandslocatie
Pad = Application.GetSaveAsFilename(fileFilter:=”PDF Files (*.pdf), *.pdf”)
If Pad = “False” Then
‘ Gebruiker heeft annuleren gekozen
Exit Sub
End If
‘ Bepaal de gewenste bestandsnaam uit cel S7
bestandsnaam = ThisWorkbook.Sheets(“Bladnaam”).Range(“S7”).Value
If bestandsnaam = “” Then
MsgBox “Er is geen bestandsnaam opgegeven in cel S7. De PDF wordt niet gemaakt.”
Else
‘ Voeg “.pdf” toe aan de bestandsnaam als het nog niet is opgenomen
If Right(bestandsnaam, 4) <> “.pdf” Then
bestandsnaam = bestandsnaam & “.pdf”
End If
‘ Sla het actieve blad op als PDF in de gekozen locatie en met de gewenste bestandsnaam
Set sh = ThisWorkbook.ActiveSheet
sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Pad, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
MsgBox “Het bestand is opgeslagen als: ” & Pad
End If
End Sub
In deze aangepaste code wordt Application.GetSaveAsFilename gebruikt om de gebruiker te vragen om een bestandslocatie te kiezen. De gekozen locatie wordt opgeslagen in de variabele Pad.
De gewenste bestandsnaam wordt nu uit cel S7 gehaald op het blad met de naam “Bladnaam”. Zorg ervoor dat je “Bladnaam” vervangt door de daadwerkelijke naam van het blad waarop cel S7 zich bevindt.
De code controleert ook of er “.pdf” aan het einde van de bestandsnaam is toegevoegd. Als dit niet het geval is, wordt het automatisch toegevoegd om ervoor te zorgen dat het bestand de juiste extensie heeft.
Als er geen bestandsnaam is opgegeven in cel S7, wordt er een foutmelding weergegeven en wordt geen PDF gemaakt.
Als alles goed gaat, wordt het actieve blad opgeslagen als PDF in de gekozen locatie met de gewenste bestandsnaam.
Ik zou graag slechts een deel (A1:H44) van een werkblad als PDF opslaan met een naam uit een cel binnen dat bereik.
Ik kan er maar niet achterkomen hoe dat te programmeren in VBA
Je kunt dit inderdaad in VBA doen met een macro die een bepaald bereik als PDF opslaat en de bestandsnaam instelt op basis van de inhoud van een cel binnen dat bereik.
Zie onderstaande code.
Vervang `”NaamVanJeWerkblad”` door de daadwerkelijke naam van je werkblad waarop het bereik zich bevindt.
Pas eventueel het bereik `”A1:H44″` aan als dat nodig is.
Pas de cel aan waarin de bestandsnaam staat, bijvoorbeeld `rng.Cells(1, 1)`.
Stel de juiste paden in waar je het PDF-bestand wilt opslaan.
Als je onderstaande macro uitvoert, zal het opgegeven bereik worden opgeslagen als een PDF-bestand met de bestandsnaam gebaseerd op de inhoud van de opgegeven cel.
Sub OpslaanAlsPDF()
Dim ws As Worksheet
Dim rng As Range
Dim filePath As String
Dim fileName As String
‘ Definieer het werkblad en het bereik dat je wilt opslaan
Set ws = ThisWorkbook.Worksheets(“NaamVanJeWerkblad”)
Set rng = ws.Range(“A1:H44”)
‘ Bepaal het pad waar het PDF-bestand moet worden opgeslagen
filePath = ThisWorkbook.Path & “\” ‘ Hier wordt het bestand opgeslagen in dezelfde map als het Excel-bestand
‘ Bepaal de bestandsnaam op basis van de inhoud van een cel binnen het bereik
fileName = rng.Cells(1, 1).Value ‘ Bijvoorbeeld, als de cel A1 de gewenste bestandsnaam bevat
‘ Sla het bereik op als PDF-bestand
rng.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath & fileName & “.pdf”, Quality:=xlQualityStandard
MsgBox “PDF-bestand is succesvol opgeslagen als ” & fileName & “.pdf”, vbInformation
End Sub
Succes!