• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Opgelost Alle tabbladen in excel omzetten naar pdf bestanden

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

vbeverp

Gebruiker
Lid geworden
23 feb 2012
Berichten
17
Beste,

Ik heb een macro gemaakt die alle tabbladen in een Excel bestand dient om te zetten naar pdf bestanden.
De macro loopt vast bij het omzetten naar pdf.
Het is de bedoeling dat de pdf bestanden de naam krijgen van de tabbladnamen. (Niet blad1, blad2, enz)

Kan iemand mij hiebij verder helpen?
Dank bij voorbaad.

In bijlage de code in een word bestand en het Excel bestand waanvan de tabbladen naar pdf dienen geconverteerd te worden.
 

Bijlagen

Wijzig
Code:
For Each ws In ThisWorkbook.Worksheets
in
Code:
For Each ws In ActiveWorkbook.Worksheets
 
En wil je dan alle tabbladen in 1 PDF of een PDF per tabblad?
 
Deze doet het hier prima.
Je eigen code die je in het Word document plaatste.
Alleen een "\" toegevoegd aan mapPad:
Code:
Sub SlaTabbladenOpAlsPDF()
    Dim ws As Worksheet
    Dim mapPad As String
    Dim bestandNaam As String
    Dim volledigPad As String
    Dim fn As Variant


     MsgBox "Open het Excel bestand waarvan u alle de tabladen met hun specifieke naam wil omzetten naar pdf.", vbInformation
     fn = Application.GetOpenFilename("Excel-files,*.xls*;*.xlsx", 1, "Select One File To Open", , False)
     If TypeName(fn) = "Boolean" Then Exit Sub
     Workbooks.Open fn

    ' Stel het pad in waar de PDF-bestanden worden opgeslagen
    mapPad = "C:\Users\Pamayo\Desktop\pdf\" ' Pas dit aan naar de gewenste map

    ' Controleer of de map bestaat
    If Dir(mapPad, vbDirectory) = "" Then
        MsgBox "De opgegeven map bestaat niet. Controleer het pad en probeer opnieuw.", vbExclamation
        Exit Sub
    End If

    ' Loop door elk werkblad in de werkmap
    For Each ws In ThisWorkbook.Worksheets
        ' Stel de naam van het bestand in (tabbladnaam) en volledig pad
        bestandNaam = ws.Name & ".pdf"
        volledigPad = mapPad & bestandNaam

        ' Exporteer het werkblad als PDF

        ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=volledigPad, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=True

    Next ws

    MsgBox "Alle tabbladen zijn succesvol opgeslagen als PDF in de gewenste map.", vbInformation
End Sub

Misschien aan het einde nog even het geopende werkboek (fn) sluiten.
Ook kan je OpenAfterPublish:=True op False zetten.
 
Laatst bewerkt:
Bij mij loopt de macro vast bij de omzetting naar pdf. Zie word bestand met Error.
Weet u waarom?
Dank bij voorbaat.
 

Bijlagen

Daarvoor zou ik het document moeten zien waarvan je de tabbladen naar PDF wilt exporteren.
 
Gooi deze er eens tegenaan.

Code:
Sub SlaTabbladenOpAlsPDF()
    Dim ws As Worksheet
    Dim mapPad As String
    Dim bestandNaam As String
    Dim volledigPad As String
    Dim fn As Variant

    ' Stel het pad in waar de PDF-bestanden worden opgeslagen
    mapPad = "C:\Users\Pamayo\Desktop\pdf\"  'Pas dit aan naar de gewenste map

    ' Controleer of de map bestaat
    If Dir(mapPad, vbDirectory) = "" Then
        MsgBox "De opgegeven map bestaat niet. Controleer het pad en probeer opnieuw.", vbExclamation
        Exit Sub
    End If
    
     MsgBox "Open het Excel bestand waarvan u alle de tabladen met hun specifieke naam wil omzetten naar pdf.", vbInformation
     fn = Application.GetOpenFilename("Excel-files,*.xls*;*.xlsx", 1, "Select One File To Open", , False)
     If TypeName(fn) = "Boolean" Then Exit Sub
     Application.ScreenUpdating = False
     Workbooks.Open fn
     wb = CreateObject("scripting.filesystemobject").getfilename(fn)
    ' Loop door elk werkblad in de werkmap
    For Each ws In Workbooks(wb).Sheets
        ' Stel de naam van het bestand in (tabbladnaam) en volledig pad
        volledigPad = mapPad & ws.Name
        ' Exporteer het werkblad als PDF
        ws.ExportAsFixedFormat 0, volledigPad
    Next ws
    Workbooks(wb).Close False
    MsgBox "Alle tabbladen zijn succesvol opgeslagen als PDF in de gewenste map.", vbInformation
    Application.ScreenUpdating = True
End Sub
 
Hallo,

In bijlage het bestand.
Het maakt niet uit welk bestand, ook in het vorige opgstuurde bestand "Test macro.xlsx" geeft dit op herzelfde punt een blokkering.
Ik grbruik Excel versie "Microsoft® Excel® 2019 MSO (Versie 2410 Build 16.0.18129.20100) 32 bits "

Dank bij voorbaat en goed weekend.
 

Bijlagen

Hebt ge de code uit mijn vorig antwoord al eens geprobeerd ?
 
Beste Rudi,

Heb ik gedaan, maar zit een foutje in.
Mvg.
Patrick

Error macro.docx.png
 
Jij hebt bovenaan waarschijnlijk Option Explicit staan dus voeg bovenaan bij de andere declaraties volgende bij.

Dim wb as String
 
Verander in mijn voorbeeld code in #5 dit:
Code:
For Each ws In ThisWorkbook.Worksheets

In dit:
Code:
For Each ws In ActiveWorkbook.Worksheets
 
Laatst bewerkt:
Ok, met deze aanpassing werkt het.
Alleen nog 1 probleem: in het geopende Excel bestand wordt een extra tablad (Blad1) toegevoegd wat niet de bedoeling is en uiteraard ook opgelagen als pdf.
Kan men hier nog eens naar kijken aub.
Door deze code "
ws.ExportAsFixedFormat Type:=xlTypePDF, fileName:=volledigPad, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False"
wordt er een extra tablad (Blad1) toegevoegd in het Excel bestand"
Dank bij voorbaat en een fijne zondag avond toegewenst.
Mvg.
 
Laatst bewerkt:
De code voegt nergens een werkblad toe.
In je voorbeeld document zit deze ook al.
 
Inderdaad, deze was niet direct zichtbaar.
Bedankt aan iedereen voor het helpen oplossen van mijn probleem.

Nog 1 vraagje, is het mogelijk de gegenereerde pdf bestanden te openen en alles naar de printer te sturen?
Bedankt.
 
Je kan makkelijker die tabbladen naar de printer sturen, net voor of net nadat de PDF is aangemaakt.
 
Als laatste wens ik het aantal tabbladen te tellen en aan de gebruiker melden.
Maar mijn code is ergens niet correct want ik blijf op 1 ( zie code onderaan)

Dank bij voorbaat.

Sub SlaTabbladenOpAlsPDF()
Dim ws As Worksheet
Dim mapPad As String
Dim bestandNaam As String
Dim volledigPad As String
Dim fn As Variant
Dim wb As String
Dim tel As Integer




' Stel het pad in waar de PDF-bestanden worden opgeslagen
mapPad = "C:\Users\Pamayo\Desktop\pdf\" 'Pas dit aan naar de gewenste map

' Controleer of de map bestaat
If Dir("C:\Users\Pamayo\Desktop\pdf\", vbDirectory) = "" Then
' De map bestaat nog niet, maak deze aan
MkDir "C:\Users\Pamayo\Desktop\pdf\"
End If

MsgBox "Open het Excel bestand waarvan u alle de tabladen met hun specifieke naam wil omzetten naar pdf.", vbInformation
fn = Application.GetOpenFilename("Excel-files,*.xls*;*.xlsx", 1, "Select One File To Open", , False)
If TypeName(fn) = "Boolean" Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open fn
wb = CreateObject("scripting.filesystemobject").getfilename(fn)
' Loop door elk werkblad in de werkmap
For Each ws In Workbooks(wb).Sheets
' Stel de naam van het bestand in (tabbladnaam) en volledig pad
volledigPad = mapPad & ws.Name
' Exporteer het werkblad als PDF
ws.ExportAsFixedFormat 0, volledigPad
Next ws

' Loop door alle werkbladen in de actieve werkmap en tel ze op.
For Each ws In ThisWorkbook.Worksheets


tel = tel + 1

Next ws
' Toon het aantal tabbladen
MsgBox " Hat aantal tabbladen die zijn geconventeerd naar pdf = " & tel, vbInformation

Application.ScreenUpdating = True
Workbooks(wb).Close False
End Sub
 
Sub SlaTabbladenOpAlsPDF()
Dim ws As Worksheet
Dim mapPad As String
Dim bestandNaam As String
Dim volledigPad As String
Dim fn As Variant
Dim wb As String
Dim tel As Integer
' Stel het pad in waar de PDF-bestanden worden opgeslagen
mapPad = "C:\Users\Pamayo\Desktop\pdf\" 'Pas dit aan naar de gewenste map

' Controleer of de map bestaat
If Dir("C:\Users\Pamayo\Desktop\pdf\", vbDirectory) = "" Then
' De map bestaat nog niet, maak deze aan
MkDir "C:\Users\Pamayo\Desktop\pdf\"
End If

MsgBox "Open het Excel bestand waarvan u alle de tabladen met hun specifieke naam wil omzetten naar pdf.", vbInformation
fn = Application.GetOpenFilename("Excel-files,*.xls*;*.xlsx", 1, "Select One File To Open", , False)
If TypeName(fn) = "Boolean" Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open fn
wb = CreateObject("scripting.filesystemobject").getfilename(fn)
' Loop door elk werkblad in de werkmap
For Each ws In Workbooks(wb).Sheets
' Stel de naam van het bestand in (tabbladnaam) en volledig pad
volledigPad = mapPad & ws.Name
' Exporteer het werkblad als PDF
tel = tel + 1
ws.ExportAsFixedFormat 0, volledigPad
Next ws

MsgBox " Hat aantal tabbladen die zijn geconventeerd naar pdf = " & tel, vbInformation

Application.ScreenUpdating = True
Workbooks(wb).Close False
End Sub
 
Met deze worden de pdf-bestanden ook direct afgedrukt.
Het enige dat je moet nakijken is het pad naar Acrobat Reader nl onderstaande zin in de code.

Code:
Shell "C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe /t " & volledigPad & ".pdf", 1

Code:
Sub SlaTabbladenOpAlsPDF()
    Dim ws As Worksheet
    Dim mapPad As String
    Dim volledigPad As String
    Dim fn As Variant
    Dim wb As String
    Dim tel As Long

    ' Stel het pad in waar de PDF-bestanden worden opgeslagen
    mapPad = "C:\Users\Pamayo\Desktop\pdf\"  'Pas dit aan naar de gewenste map

    ' Controleer of de map bestaat
    If Dir(mapPad, vbDirectory) = "" Then
        MsgBox "De opgegeven map bestaat niet. Controleer het pad en probeer opnieuw.", vbExclamation
        Exit Sub
    End If
    
     MsgBox "Open het Excel bestand waarvan u alle de tabladen met hun specifieke naam wil omzetten naar pdf.", vbInformation
     fn = Application.GetOpenFilename("Excel-files,*.xls*;*.xlsx", 1, "Select One File To Open", , False)
     If TypeName(fn) = "Boolean" Then Exit Sub
     Application.ScreenUpdating = False
     Workbooks.Open fn
     wb = CreateObject("scripting.filesystemobject").getfilename(fn)
    ' Loop door elk werkblad in de werkmap
        For Each ws In Workbooks(wb).Sheets
        ' Stel de naam van het bestand in (tabbladnaam) en volledig pad
            volledigPad = mapPad & ws.Name
        ' Exporteer het werkblad als PDF
            ws.ExportAsFixedFormat 0, volledigPad
            Shell "C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe /t " & volledigPad & ".pdf", 1
            tel = tel + 1
        Next ws
    Workbooks(wb).Close False
    Application.ScreenUpdating = True
    MsgBox " Hat aantal tabbladen die zijn geconventeerd naar pdf = " & tel, vbInformation
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan