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!

6 replies on “Tabbladen opslaan als PDF”

  • 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.

      Joost Administrator
  • 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

    bas wilbers
    • 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.

      Joost Administrator
  • 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

    Arwin Kortleever
    • 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!

      Joost Administrator

Leave a Comment

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *