Vba Excel foutmelding opslaan bestand

Henk G 240 Reputatiepunten
2026-11-03T11:38:52.4433333+00:00

Ik gebruik deze macro voor het opslaan van een nieuw bestand wat ik heb gemaakt aan de hand van gegevens in het bestand waar deze macro staat:

    ' Vraag waar het nieuwe bestand moet worden opgeslagen

    filePath = Application.GetSaveAsFilename( _

        InitialFileName:="", _

        FileFilter:="Excel-werkmap (*.xlsx), *.xlsx")

        ' Sla het nieuwe bestand op en sluit het

    If filePath <> False Then

             newWB.SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook

        newWB.Close False

 sPosition = InStrRev(filePath, "")

sLengte = Len(filePath)

sBestandlengte = sLengte - sPosition

sNaam = Right(filePath, sBestandlengte)

         MsgBox "" & vbNewLine & sNaam, , "Bestand succesvol opgeslagen"

     Else

                 newWB.Close False

        MsgBox "Opslaan geannuleerd.", vbExclamation, ""

    End If

Als er na het starten van de macro geen bestandsnaam wordt ingevoerd maar wordt gekozen voor Annuleren gaat het goed, dan verschijnt de melding "Opslaan geannuleerd".

Wordt er een bestaande bestandsnaam gekozen, komt daarna de vraag vanuit Windows: "Vervangen Ja Nee Annuleren".

Kiest de gebruiker voor Vervangen Ja gaat het goed.

Kiest de gebruiker voor Nee of Annuleren, dan verschijnt de foutmelding "Methode SaveAs is mislukt", bij deze regel:            newWB.SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook

Hoe kan ik zorgen dat ik in deze situatie geen foutmelding krijg en dat het bestand wat ik nieuw had gemaakt wordt gesloten?

 

Microsoft 365 en Office | Excel | Overige | Windows
0 opmerkingen Geen opmerkingen

Antwoord geaccepteerd door vraagauteur
Xavier-D 14,440 Reputatiepunten Extern personeel Microsoft Moderator
2026-11-04T04:02:02.2433333+00:00

Disclaimer: Houd er rekening mee dat de verstrekte informatie is vertaald met behulp van automatische vertaaltools. Hoewel we streven naar nauwkeurigheid, is het mogelijk dat de vertalingen niet perfect de betekenis, context of oorspronkelijke bedoeling van de brontekst weergeven.  


Hallo Henk G,

GetSaveAsFilename controleert alleen welke bestandsnaam en locatie zijn gekozen. Wanneer daarna bij de Excel-melding Vervangen voor Nee of Annuleren wordt gekozen, wordt SaveAs afgebroken. VBA behandelt dit vervolgens als fout 1004.

U kunt dit voorkomen door vóór SaveAs zelf te controleren of het bestand al bestaat:

Dim filePath As Variant
Dim antwoord As VbMsgBoxResult
filePath = Application.GetSaveAsFilename( _
    InitialFileName:="", _
    FileFilter:="Excel-werkmap (*.xlsx), *.xlsx")
'Geannuleerd in het venster Opslaan als
If filePath = False Then
    newWB.Close SaveChanges:=False
    MsgBox "Opslaan geannuleerd.", vbExclamation
    Exit Sub
End If
'Controleer of het bestand al bestaat
If Dir(CStr(filePath)) <> "" Then
    antwoord = MsgBox( _
        "Dit bestand bestaat al. Wilt u het vervangen?", _
        vbYesNoCancel + vbQuestion, _
        "Bestand vervangen")
    If antwoord <> vbYes Then
        newWB.Close SaveChanges:=False
        MsgBox "Opslaan geannuleerd.", vbExclamation
        Exit Sub
    End If
End If
'Opslaan zonder een tweede vervangingsmelding
On Error GoTo OpslaanMislukt
Application.DisplayAlerts = False
newWB.SaveAs Filename:=CStr(filePath), FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
sPosition = InStrRev(CStr(filePath), "\")
sNaam = Mid$(CStr(filePath), sPosition + 1)
newWB.Close SaveChanges:=False
MsgBox sNaam, vbInformation, "Bestand succesvol opgeslagen"
Exit Sub
OpslaanMislukt:
Application.DisplayAlerts = True
newWB.Close SaveChanges:=False
MsgBox "Het bestand kon niet worden opgeslagen: " & _
       Err.Description, vbExclamation, "Opslaan mislukt"

Hiermee worden alle drie de situaties afgehandeld:

  • Annuleren in het venster Opslaan als sluit de nieuwe werkmap.
  • Nee of Annuleren bij het vervangen sluit de nieuwe werkmap zonder foutmelding.
  • Ja vervangt het bestaande bestand.

Let vooral op de backslash in InStrRev(CStr(filePath), "\"). In de code uit de vraag lijkt deze bij InStrRev te ontbreken.

Mocht je verdere hulp nodig hebben, reageer dan gerust op dit bericht; ik help je graag verder.

Was dit antwoord nuttig?

1 persoon vond dit antwoord nuttig.

0 extra antwoorden

Sorteren op: Nieuwste

Uw antwoord

Antwoorden kunnen worden gemarkeerd als 'Geaccepteerd' door de auteur van de vraag en 'Aanbevolen' door moderators, zodat gebruikers het antwoord van de auteur kunnen weten.