Excel naar PDF opslaan, als naam al bestaat overschrijft hij de PDF

Status
Niet open voor verdere reacties.

LSmedts

Nieuwe gebruiker
Lid geworden
28 jul 2016
Berichten
4
Ik heb voor mijn collega's een bestand gemaakt waarbij zij enkele gegevens op een invulblad ingeven en dan op een knop kunnen klikken waarbij er automatisch op een vooraf ingestelde locatie een PDF document word gemaakt.
Tot zover gaat het goed.

Nu krijg ik echter de opmerking dat wanneer zij vergeten om het nummer in een cel aan te passen het vorige PDF document zonder enige melding gewoon word overschreven. Nu wil ik hiervoor graag een check inbouwen dat er in ieder geval een melding komt dat dit document al bestaat. (zoals dit normaal is als je documenten handmatig doet opslaan).

Ik heb het internet al aardig af zitten zoeken naar verschillende opties maar ik kom er gewoon niet uit.

Tot zover ziet mijn Code er zo uit:


Code:
Sub MaakPDF()


    Dim PDFfilenameNL As String
    Dim PDFfilenameEN As String

           
1
    If Sheets("Invulblad").Range("D4").Value = "Engels" Then
    PDFfilenameEN = Sheets("Invulblad").Range("A17") & "_EN.pdf"
    Sheets("CE verklaring Eng").ExportAsFixedFormat xlTypePDF, PDFfilenameEN, xlQualityStandard, False, False, OpenAfterPublish:=False
    MsgBox "Het PDF-bestand is in het Engels opgeslagen"
    Else: GoTo 2
        
    
2
    If Sheets("Invulblad").Range("D4").Value = "Nederlands" Then
    PDFfilenameNL = Sheets("Invulblad").Range("A17") & "_NL.pdf"
    Sheets("CE verklaring NL").ExportAsFixedFormat xlTypePDF, PDFfilenameNL, xlQualityStandard, False, False, OpenAfterPublish:=False
    MsgBox "Het PDF-bestand is in het Nederlands opgeslagen"
    
    End If
    End If
        
End Sub
 
Controleer dan eerst of het bestand al bestaat:
Code:
If Dir(PDFfilenameNL) <> "" Then  [COLOR="#008000"]'Bestand bestaat al[/COLOR]

Edit:
Had er ff zin in. Probeer deze eens:
Code:
Sub MaakPDF()
    Dim PDFfilename As String
    Dim PDFsheetname As String
    Dim PDFLanguage As String

    Select Case Sheets("Invulblad").Range("D4").Value
        Case "Nederlands"
            PDFfilename = Sheets("Invulblad").Range("A17") & "_NL.pdf"
            PDFLanguage = "Nederlands"
            PDFsheetname = "CE verklaring NL"
        
        Case "Engels"
            PDFfilename = Sheets("Invulblad").Range("A17") & "_EN.pdf"
            PDFLanguage = "Engels"
            PDFsheetname = "CE verklaring Eng"

        Case Else
            MsgBox "Invulblad D4 bevat geen juiste waarde", vbCritical
            Exit Sub
    End Select

    If Dir(PDFfilename) <> "" Then
        MsgBox "Bestand " & PDFfilename & " bestaat al.", vbCritical
        Exit Sub
    End If
    
    On Local Error GoTo Fout
    Sheets(PDFsheetname).ExportAsFixedFormat _
        xlTypePDF, _
        PDFfilename, _
        xlQualityStandard, _
        OpenAfterPublish:=False
    
    MsgBox "Het PDF-bestand is in het " & PDFLanguage & " opgeslagen"
    Exit Sub
    
Fout:
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
    
End Sub
 
Laatst bewerkt:
Super!

super, dit werkt precies zoals ik wilde.
ik was nog even aan het stoeien met je eerste eerste opmerking, daar lukte het wel als ik die regel toevoegde in blok 2, maar zodra ik die in blok 1 ook ging toevoegen.. ging het mis.

Heel erg bedankt !:thumb:
 
ik heb toch nog een aanvullende vraag:
Ik helemaal blij dat dit gelukt is, krijg ik de vraag: maar als we nu willen dat het bestand wél word overschreven? kan dit dan ook nog?
is hier nog een variant op waar je me mee zou kunnen helpen? iets van een keuze MsgBox "Dit bestand bestaat al wilt u het bestand overschrijven?" optie voor ja, nee of annuleren ??
of heb je hier een beter idee voor?
 
Wijzig dit stukje:
Code:
If Dir(PDFfilename) <> "" Then
    MsgBox "Bestand " & PDFfilename & " bestaat al.", vbCritical
    Exit Sub
End If

In dit:
Code:
If Dir(PDFfilename) <> "" Then
    If MsgBox("Bestand " & PDFfilename & " bestaat al. Wilt u het overschrijven?", vbCritical + vbYesNo) = vbNo Then
        Exit Sub
    End If
End If
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan