Waarom kan ik het standaard dialoogvenster 'Opslaan als' in PowerPoint niet annuleren via het Application.PresentationBeforeSave-event?

Robin Bouwmeester 46 Reputatiepunten
2025-11-20T08:40:20.9366667+00:00

In PowerPoint wordt het dialoogvenster Opslaan als eerst weergegeven, en pas nadat de gebruiker op Opslaan klikt, wordt het event PresentationBeforeSave geactiveerd. Hierdoor kan een ontwikkelaar het standaard dialoogvenster niet annuleren of vervangen door een aangepast dialoogvenster.

In Excel en Word werkt dit anders: daar wordt het event BeforeSave uitgevoerd vóórdat het standaard dialoogvenster verschijnt. Bovendien is er een extra parameter SaveAsUI beschikbaar, waarmee je kunt bepalen of het dialoogvenster wordt getoond.

Bij PowerPoint ontbreekt deze mogelijkheid. Het enige moment waarop het event vóór een dialoog wordt uitgevoerd, is wanneer de gebruiker de presentatie sluit en gevraagd wordt of deze moet worden opgeslagen.


Verwachte werking

Het event PresentationBeforeSave zou moeten worden geactiveerd voordat PowerPoint het standaard dialoogvenster Opslaan als toont, vergelijkbaar met Excel en Word. Dit geeft ontwikkelaars de kans om het standaard gedrag te overschrijven en een eigen dialoogvenster te tonen.

Microsoft 365 en Office | PowerPoint | Overige | Windows
Microsoft 365 en Office | PowerPoint | Overige | Windows

Een familie van Microsoft-producten voor grafische elementen in presentaties met tools voor het creëren van presentaties en het toevoegen van grafische effecten zoals multimedia-objecten en speciale effecten met tekst.

0 opmerkingen Geen opmerkingen

1 antwoord

Sorteren op: Meest nuttig
  1. Katerina-N 9,305 Reputatiepunten Extern personeel Microsoft Moderator
    2025-11-20T20:58:42.6133333+00:00

    Disclaimer: De verstrekte informatie is vertaald met behulp van een automatische vertaaltool. Hoewel we ons inspannen voor nauwkeurigheid, kunnen vertalingen soms niet volledig overeenkomen met de inhoud, context en bedoeling van de oorspronkelijke tekst.

    Hallo Robin Bouwmeester,

    Bedankt dat u uw vraag hebt geplaatst in het Microsoft Q&A-forum!

    Ik begrijp dat u een probleem hebt met PowerPoint. Ik begrijp echt hoe vervelend dit kan zijn. Laat me u helpen om deze situatie door te komen.

    Je loopt tegen een PowerPoint-specifieke beperking van het gebeurtenismodel aan:

    • Application.PresentationBeforeSave in PowerPoint wordt uitgevoerd wanneer het dialoogvenster Opslaan/Opslaan als al verschijnt, niet ervoor, en biedt slechts één parameter: Cancel as Boolean. Er is geen SaveAsUI-parameter zoals in Excel/Word.
    • Met andere woorden: PowerPoint toont eerst het standaard dialoogvenster Opslaan/Opslaan als, en daarna wordt jouw handler aangeroepen—je kunt dus niet het standaardvenster onderdrukken of vervangen zoals in Excel/Word. Dit is ontwerpkeuze in PowerPoint.

    Waarom Excel/Word anders werken

    Excel heeft Workbook.BeforeSave(ByVal SaveAsUI as Boolean, ByRef Cancel as Boolean) en Word iets vergelijkbaars, waarmee je kunt zien of het dialoogvenster wordt getoond en dit kunt annuleren voordat Office iets weergeeft. PowerPoint heeft deze parameter niet.

    Mogelijke oplossingen (workarounds)

    Afhankelijk van jouw technologie (VBA of COM/VSTO-add-in):

    1. Backstage/Ribbon aanpassen (alleen COM/VSTO)
      • Je kunt de Backstage-knop “Opslaan als…” of de Ribbon-knop “Opslaan” hergebruiken zodat jouw code eerst draait. Dan kun je jouw eigen dialoog tonen en daarna zelf opslaan.
    2. Sneltoetsen onderscheppen (alleen managed add-in)
      • Voor Ctrl+S kun je een keyboard hook gebruiken en jouw eigen dialoog tonen, daarna Presentation.Save of SaveAs aanroepen.
    3. Cancel=True + eigen opslaan (VBA)
      • In VBA kun je in PresentationBeforeSave Cancel=True zetten en daarna zelf opslaan met Pres.SaveAs. Het standaardvenster verschijnt echter nog kort.
    4. AutoSave uitschakelen indien nodig
      • Bij OneDrive/SharePoint kan AutoSave extra triggers veroorzaken. Houd hier rekening mee.

    Voorbeeld (VBA)

    Private Sub PPTApp_PresentationBeforeSave(ByVal Pres As PowerPoint.Presentation, Cancel As Boolean)
        Cancel = True
        ' Toon eigen dialoog
        Dim pad As String
        pad = "C:\Temp\MijnPresentatie.pptx"
        Pres.SaveAs pad
    End Sub
    

    Dit voorkomt het standaard opslaan, maar niet dat het dialoogvenster kort verschijnt.

    Conclusie: Je kunt het standaard dialoogvenster in PowerPoint niet volledig voorkomen met alleen PresentationBeforeSave. Wil je een eigen dialoog vóór elk standaardvenster, dan heb je een managed add-in nodig die Backstage/Ribbon repurposing ondersteunt.

    Ik hoop dat dit helpt bij uw situatie. Neem gerust opnieuw contact op als u een update hebt of meer vragen.

    Met vriendelijke groet,


    Als het antwoord nuttig is, klik dan op “Antwoord accepteren” en geef vriendelijk een stem omhoog. Als u extra vragen hebt over dit antwoord, klik dan op “Opmerking”.

    Opmerking: Volg de stappen in onze documentatie om e-mailmeldingen in te schakelen als u de bijbehorende e-mailmelding voor deze thread wilt ontvangen.

    Was dit antwoord nuttig?


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.