2017-07-23 4 views
0

J'ai protégé une présentation de point de puissance de l'utilisateur en la modifiant. Cependant, je ne peux pas utiliser VBA pour le dé-protéger.Code VBA pour déprotéger une présentation Powerpoint ouverte, puis la protéger à nouveau avant de l'enregistrer?

J'ai essayé d'utiliser ce code ci-dessous, mais cela ne fonctionne pas. Cela ne fonctionne que pour une présentation non protégée. Mais vous devrez supprimer le pw du code.

set p = pa.presentations.open(pth + pptname, pw) 
+0

Je ne pense pas qu'il existe un moyen de le faire via VBA, même à partir de Powerpoint lui-même. 'presentations.open' n'a pas de paramètre qui accepte le mot de passe. –

+0

Que diriez-vous si le PowerPoint est déjà ouvert. Un peu comme Excel. Définissez j à cette présentation puis j.password = pw etc. Je suis fatigué mais l'objet de présentation n'a pas de mot de passe. Juste dire ou quelque chose de similaire. – Johnseito

+0

Que diriez-vous de le faire dans PowerPoint VBA et avoir Excel VBA appel VBA PowerPoint? – Johnseito

Répondre

0

En supposant que vous connaissez le mot de passe, vous pouvez ouvrir le fichier avec quelque chose comme:

Presentations.Open("c:\temp\protected_presentation.pptx::password::") 

et définissez le mot de passe sur une présentation par exemple:

ActivePresentation.Password = "Hide_me" 

[édition pour ajouter un exemple de travail complet et testé qui suppose une présentation C: \ temp \ testtest.pptx qui a été enregistrée avec le mot de passe opensesame]

Sub TestTest() 

    Dim oPPTApp As Object 
    Dim oPPTPres As Object 

    Set oPPTApp = CreateObject("PowerPoint.Application") 

    If Not oPPTApp Is Nothing Then 
     Set oPPTPres = oPPTApp.presentations.Open("C:\temp\test.pptx::opensesame::") 
     MsgBox oPPTPres.slides(1).Shapes(1).TextFrame.TextRange.Text 
     oPPTPres.Close 
     oPPTApp.Quit 
    End If 
End Sub 
+0

Ok merci. Je vais essayer et voir si cela fonctionne. :) – Johnseito

+0

Je l'ai essayé et cela n'a pas fonctionné. Le premier code à ouvrir quand la présentation est protégée par mot de passe, la présentation me demandera un mot de passe avant de pouvoir continuer. Le deuxième code vient de lancer un message d'erreur "Le composant ActiveX ne peut pas créer d'objet". – Johnseito

+0

Veuillez indiquer le code que vous avez utilisé. –