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

VBA: Sheet opslaan als .PDF

Status
Niet open voor verdere reacties.

Hawkie003

Gebruiker
Lid geworden
11 aug 2015
Berichten
24
Hallo,

Ik heb onderstaande VBA code in mij werkbestand neer gezet. Op zich doet deze ook wat het moet doen, echter zijn er twee dingen waar ik niet helemaal blij mee ben.
De naam waaronder de .PDF moet worden opgeslagen gebeurt op basis van een Cel, de naam van de sheet en de datum, echter krijg ik het niet voor elkaar spaties in de naam te krijgen. Enkel underscores zijn me tot nu toe mogelijk.

Tweede punt is dat wanneer ik de macro activeer maar deze weer wil annuleren er toch een .PDF wordt gemaakt met de naam "ONWAAR".

Is er iemand die weet hoe ik één of beide punten kan oplossen.

Alvast bedankt.

Sub Leeftijdsverdeling_PDF()
Dim ws As Worksheet
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
On Error GoTo errHandler

Set ws = ActiveSheet

'enter name and select folder for file
' start in current workbook folder
strFile = Replace(Replace(Range("B1") & "_" & ws.Name, " ", ""), ".", "_") & "_" & Format(Now(), "yyyy-mm-dd\") & ".pdf"
strFile = ThisWorkbook.Path & "\" & strFile

myFile = Application.GetSaveAsFilename _
(InitialFileName:=strFile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Select Folder and FileName to save")

If myFile <> "False" Then
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=myFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

MsgBox "PDF file has been created."
End If

exitHandler:
Exit Sub
errHandler:
MsgBox "Could not create PDF file"
Resume exitHandler
End Sub
 
Waarom heb je hier een \ teken in zitten? Dat zal een probleem geven.
Format(Now(), "yyyy-mm-dd\") & ".pdf"

Hier werkt het overigens zo prima, incl. de spaties:
strFile = Range("B1") & " " & ws.Name & " " & Format(Now(), "yyyy-mm-dd") & ".pdf"

Dat van een PDF met ONWAAR als naam gebeurt hier niet. Zo zit het er hier uit:
Code:
Sub Leeftijdsverdeling_PDF()
    Dim ws As Worksheet
    Dim strPath As String
    Dim myFile As Variant
    Dim strFile As String
    On Error GoTo errHandler
    
    Set ws = ActiveSheet
    
    'Enter name and select folder for file
    'Start in current workbook folder
    strFile = ThisWorkbook.Path & "\" & _
              Range("B1") & " " & _
              ws.Name & " " & _
              Format(Now(), "yyyy-mm-dd") & ".pdf"
    
    myFile = Application.GetSaveAsFilename _
             (InitialFileName:=strFile, _
             FileFilter:="PDF Files (*.pdf), *.pdf", _
             Title:="Select Folder and FileName to save")
    
    If myFile <> "False" Then
        ws.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    
        MsgBox "PDF file has been created."
    End If
    
exitHandler:
    Exit Sub

errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub

Daarnaast, heb je een speciale reden om berichten aan de gebruiker in het Engels te doen?
 
Dank, zal het morgen proberen. Het is uiteindelijk een worksheet waar ook Engelsen mee komen te werken.

Groet
 
De spaties in de naam is inderdaad opgelost. Maar nog altijd als ik op annuleren druk en de .PDF niet wil opslaan, slaat het toch een .PDF op met naam "ONWAAR".

Groet
 
Ik heb het hier nog even getest en krijg het niet stuk.
Wijzig: If myFile <> "False" Then
Eens in: If myFile <> False Then

Wie weet...
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan