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

macro niet overschrijven bij bestaande naam

  • Onderwerp starter Onderwerp starter LBe
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

LBe

Gebruiker
Lid geworden
21 dec 2019
Berichten
20
Hallo,

ik heb een macro die automatisch het bestand opslaat als PDF.
Tevens wordt hij geopend na het opslaan.
Echter, mocht er al een bestand bestaan met dezelfde naam, wordt deze overschreven.
Hoe kan ik dit voorkomen.
Bij voorkeur krijg ik eerst een melding dat er al een bestand bestaat met dezelfde naam en de vraag of hij die moet overschrijven. Daarna moet ik dan de mogelijkheid hebben om een andere naam te geven.

Onerstaand de macro zoals hij er nu staat.

Code:
Sub PDF_opslaan()
'
' PDF_opslaan Macro
'

'
   ChDir "T:\map 1\map 2\map 3\map 4"
        Range("A1:I55").Select
        Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        Range("K11").Value, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True
        
End Sub
 
Laatst bewerkt door een moderator:
Met Dir controleren of het bestand al bestaat, zou kunnen.
Code:
If Dir("T:\map 1\map 2\map 3\map 4\"& Range("K11").Value) ="" Then
     ....
Else
    ....
End If
 
Zoiets:
Code:
Sub PDF_opslaan()
    pdf = "T:\map 1\map 2\map 3\map 4\" & Range("K11").Value
    
    If Dir(pdf) <> "" Then
        If MsgBox("Bestand bestaat al. Overschrijven?", vbQuestion) = vbYes Then
            Range("A1:I55").ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdf, OpenAfterPublish:=True
        End If
    End If
End Sub
 
Laatst bewerkt:
En dan nu maar afwachten wat er in K11 staat. Wel of geen
Code:
 \
:d

Zal wel weggevallen zijn door geen codetags te gebruiken.
 
Klopt. En dit:
Code:
ChDir "T:\map 1\map 2\map 3\map 4"
Werkt ook niet als je huidige schijf een andere is dan de T: schijf.
Dan moet je eerst ChDrive("T") gebruiken.
Beter gewoon geen van beide gebruiken.
 
Laatst bewerkt:
Zoiets:
Code:
Sub PDF_opslaan()
    pdf = "T:\map 1\map 2\map 3\map 4" & Range("K11").Value
    
    If Dir(pdf) <> "" Then
        If MsgBox("Bestand bestaat al. Overschrijven?", vbQuestion) = vbYes Then
            Range("A1:I55").ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdf, OpenAfterPublish:=True
        End If
    End If
End Sub


Ik heb de code geprobeerd te gebruiken maar hij slaat het bestand alleen maar op als een excel file. Ook krijg ik geen melding dat het bestand al bestaat.


@Octafish: ik heb naar jou code gekeken maar daar kom ik ook niet uit.
 
De code die ik plaatste werkt prima.
En die KAN het niet eens opslaan als Excel bestand.
Je doet dus zelf ergens iets helemaal verkeerd.

Lees ook wat VenA schreef over die waarschijnlijk weg gevallen backslash "\"
Die heb ik er in m'n voorbeeld toch meer even bij gezet.
Plaats anders je document
 
Laatst bewerkt:
Wordt het niet tijd voor een bestandje? Dan had je waarschijnlijk een uur geleden al een werkende oplossing gehad :).
 
Ik heb het volgende nu staan:



Code:
 Sub PDF_opslaan()
'
' PDF_opslaan Macro
'

'
ChDir "T:\map 1\map 2\map 3\map 4"
Range("A1:I55").Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Range("K11").Value

If Dir(pdf) <> "" Then

        If MsgBox("Bestand bestaat al. Overschrijven?", vbQuestion) = vbYes Then
            Range("A1:I55").ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdf, OpenAfterPublish:=True
        End If
    End If

End Sub


Hij begint met opslaan en dan komt het VBA scherm naar voren waar de regel: If Dir(pdf) <> "" Then geel is gemarkeerd. Ik kreeg ook een keer een pop-up met de melding "typen komen niet overeen.

Ik zag dat hij wel een PDF had opgeslagen met de juiste naam.

echter het is niet de bedoeling dat die foutmelding in beeld komt en het bestand kan nog steeds onder dezelfde naam opgeslagen worden.
 
Laatst bewerkt door een moderator:
Je hebt de helft niet gelezen en het voorbeeld totaal verkeerd overgenomen.
 
Wordt het niet tijd voor een bestandje? Dan had je waarschijnlijk een uur geleden al een werkende oplossing gehad :).

Ja misschien wel, maar er stond zoveel nformatie in dat ik het zo wou proberen.

IK zal even proberen wat info weg te halen en het te plaatsen
 
Laatst bewerkt:
Je hebt de helft niet gelezen en het voorbeeld totaal verkeerd overgenomen.

Tja, dat begrijp ik ook nooit.
Op de een of andere manier moeten hun eigen ideeën er ook nog in verwerkt worden.
 
Vervang je hele code door dit:
Code:
Sub PDF_opslaan()
    PDF = "T:\map 1\map 2\map 3\ map 4\" & Range("K11")"
    If Dir(PDF) <> "" Then
        If MsgBox("Bestand bestaat al. Overschrijven?", vbQuestion) = vbYes Then
            Range("A1:I55").ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF, OpenAfterPublish:=True
        End If
    End If
End Sub

Precies zoals mijn voorbeeld in #3.
 
Laatst bewerkt door een moderator:
Tja, dat begrijp ik ook nooit.
Op de een of andere manier moeten hun eigen ideeën er ook nog in verwerkt worden.

Ik had hem precies zo gekopieerd als dat hij hem door had gegeven. met enige aanpassingen van wat namen. Dat werkte niet goed. Dus ja, dan denk ik dat er verwacht wordt dat ik zelf nog iets ga doen.
En als ik bezig ben met het proberen zie ik niet alle berichten wat verder nog voorbij komt.
 
Vervang je hele code door dit:
Code:
Sub PDF_opslaan()
    PDF = "T:\mapnaam\" & Range("K11").Value & ".pdf"
    If Dir(PDF) <> "" Then
        If MsgBox("Bestand bestaat al. Overschrijven?", vbQuestion) = vbYes Then
            Range("A1:I55").ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF, OpenAfterPublish:=True
        End If
    End If
End Sub

Precies zoals mijn voorbeeld in #3.

Dank je wel. Nu doet hij het goed.

Er zat wel een klein verschilletje in. De eerste keer had je er geen" & ".pdf" " staan. De laatste keer wel.
Misschien dat hij daarom toch als excel- file opsloeg?
 
Laatst bewerkt:
Dat is niet het verschil.
Het is niet eens nodig, had ik er voor de duidelijkheid bij gezet.
 
Dat is niet het verschil.
Het is niet eens nodig, had ik er voor de duidelijkheid bij gezet.

Dan heb ik een vreemde computer :confused: Ik heb het verschillende keren met en zonder geprobeerd en er zit echt wel verschil in, eerste werkt niet, tweede wel.

Maar uiteindelijk is er toch een oplossing gekomen en daarvoor ben ik jullie dankbaar.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan