2016-11-15 1 views
0

J'utilise actuellement un objet serveur ActiveX (nommé PP dans le code) pour écrire une présentation powerpoint (pres) depuis MATLAB. À la fin, je ferme la présentation. Cela oblige Powerpoint à fermer la présentation, quelle surprise, mais laisse une fenêtre powerpoint ouverte. Si je ferme l'objet PP, tous les powerpoints actuellement ouverts, pas seulement ceux que j'ai écrits, sont fermés. Le problème est que toutes les fenêtres powerpoint partagent un processus et PP.Quit() tue ce processus. Y at-il un moyen de fermer une fenêtre powerpoint spécifique sans tuer le processus powerpoint?Fermer la fenêtre Powerpoint à l'aide de MATLAB

PP = actxserver('PowerPoint.Application'); 
do stuff 
pres = PP.Presentations.Open(fileName); 
pres.Close(); %<- Closes the presentation, but an empty powerpoint window is still open. 
PP.Quit(); % <- That is the problem 

Répondre

1

Vous pouvez essayer ceci:

PP.Quit; 
PP.delete; 

au lieu de:

pres.Close(); %<- Closes the presentation, but an empty powerpoint window is still open. 
PP.Quit(); % <- That is the problem 
+0

Merci pour la réponse. Le problème est, que je vais toujours fermer toutes les fenêtres powerpoint ouvertes comme PP.Quit tue le Powerpoint Singleton. Votre réponse ne fonctionnera pas pour moi. – littleHue

+0

Étrange. Je l'utilise de la même manière avec Microsoft Excel et il ne ferme pas toutes les autres fenêtres. Je vois aussi que vous assignez votre fonction d'ouverture à une variable – Romano

+0

PP = actxserver ('PowerPoint.Application'); faire des choses PP.Presentations.Open (fileName); PP.Quit; PP.delete; – Romano