(Cela semble surtout être un problème spécifique PowerPoint 2007, que je ne peux pas reproduire facilement dans PPT 2010)forme dans PowerPoint et défaisant programatically provoque forme à « perdue »
Un moyen facile de reproduire localement est à:
1) Insert a shape into blank slide
2) Run command: ActivePresentation.Slides(1).Shapes(1).Delete in immediate window in Visual Studio. (You can alternatively delete through C#)
3) Undo the deletion in the PowerPoint presentation (do this non-programatically)
pour une raison quelconque, vous ne pouvez pas accéder à la forme à nouveau en utilisant des appels comme:
ActivePresentation.Slides(1).Shapes(1) //Does not allow any methods/properties to work
la seule chose que j'ai à distance Gotten est que, grâce à Selection.ShapeRange
, vous pouvez en quelque sorte obtenir une référence à l'élément, mais la plupart des propriétés/méthodes lancent ComExceptions lorsque vous essayez d'utiliser cet objet.
Est-ce que quelqu'un sait comment je peux retrouver la forme ou rafraîchir la présentation pour obtenir des objets Com propres?
Je n'ai pas 2007 à portée de main pour tester en ce moment, mais la version d'origine était un gâchis en ce qui concerne l'automatisation. Une série de Service Packs a résolu certains problèmes et introduit d'autres. SP3 semble être le meilleur pari; Si vous n'avez pas appliqué cela, je le ferais et je considérerais refuser de prendre en charge toute version de PPT 2007 qui n'a pas eu au moins SP1 appliquée. –
Hmm, je ne suis pas sûr qu'un tel refus soit possible. Je m'occupe d'une base d'utilisateurs diversifiée qui peut avoir différentes versions de système d'exploitation, différentes versions de bureau, etc. Essayer de faire appliquer le SP sur certains utilisateurs n'est probablement pas possible. – Shark
Votre appel, bien sûr, mais pré-SP1 PPT 2007 est tout simplement un désastre. –