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.
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):
- 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.
- 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.
- 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.
- 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.