Est-ce que quelqu'un sait ce que l'avenir réserve à la programmation VBA/VSTO dans PowerPoint? J'ai travaillé sur un projet de bureautique et trouve frustrant de travailler avec PowerPoint en particulier, car il semble y avoir un niveau inférieur au support VBA trouvé dans Excel ou Word. Il semble que MS tente de supprimer progressivement la prise en charge de VBA dans PowerPoints depuis qu'ils ont supprimé l'enregistrement de macros en version 2007 et que le modèle d'objet ne prend pas en charge certaines fonctionnalités clés.Existe-t-il un avenir pour PowerPoint VBA/VSTO?
Répondre
Je ne suis pas sûr si c'est la réponse que vous voulez entendre, mais le développement dans PowerPoint avec VBA est réellement bon. J'en fais pas mal (ainsi que Word et Excel) et il est assez robuste. Le PowerPoint OM qui peut être programmé contre avec VBA est mis à jour avec chacune des nouvelles versions de PPT. Dans PPT 2007, vous pouvez créer du code XML personnalisé contre n'importe quel objet sur une diapositive - bien plus puissant que les options disponibles dans Excel et Word. En revanche, Word 2007 a des contrôles de contenu, qui, pour que PPT soit un remplacement léger de type Crystal Reports, bénéficierait. Dans PPT 2010 (version bêta), vous pouvez créer par programme SmartArt, par exemple, comme vous le pouvez avec Word/Excel 2010. Vous pouvez également travailler par programme avec les éléments média mieux qu'avant. VSTO, d'un point de vue OM, n'offre pas beaucoup plus que VBA.
Cependant, cela dépend de vos besoins: créez-vous des diapositives standard? Est-ce que tu fais de l'animation prolongée? Faites-vous des rapports? Créez-vous des "applications" eLearning? Si vous avez des questions spécifiques sur l'OM, nous pouvons essayer de vous aider ici (mais peut-être que la fonctionnalité n'existe tout simplement pas). Il est convenu que retirer le type d'enregistreur de macros de l'aspirateur, ce qui était une fonctionnalité utile. Travailler directement avec la PML/DML est également une douleur. Il y a des choses que j'aimerais que l'OM soutienne également. Mais en accord avec la spéléologie, je ne crois pas que VBA s'en ira de sitôt.
NOTE: CE NE FONCTIONNE PAS. IL EST FOURNI UNIQUEMENT COMME POINT DE DÉPART SI LES GENS VEULENT ESSAYER DE DÉVELOPPER CELA DANS QUELQUE CHOSE QUI POURRAIT FONCTIONNER (si vous pouvez le faire fonctionner, n'hésitez pas à éditer cet article).
- Créer une classe appelée "clsPPTEvents"
Coller dans le code suivant.
Public WithEvents PPTEvent As Application Private Declare Function GetCursorPos Lib "user32" (ByVal lpPoint As POINTAPI) As Long Private Type POINTAPI x As Long y As Long End Type Dim ret As Long Dim mousePosition As POINTAPI Private Sub PPTEvent_WindowSelectionChange(ByVal Sel As Selection) Dim ElementID As Long Dim Arg1 As Long Dim Arg2 As Long With Sel If .Type = ppSelectionShapes Then Dim sr As ShapeRange sr = .ShapeRange If sr.Type = msoChart Then Dim sh As Shape Dim slideNumber As Integer slideNumber = ActiveWindow.View.Slide.SlideIndex sh = ActivePresentation.Slides(slideNumber).Shapes(sr.Name) Dim crt As Chart crt = sh.Chart H = ActiveWindow.Height w = ActiveWindow.Width ret = GetCursorPos(mousePosition) x = mousePosition.x y = mousePosition.y crt.GetChartElement(x, y, ElementID, Arg1, Arg2) MsgBox("X: " & x & ", Y: " & y & vbNewLine & _ "ElementID: " & ElementID & ", Arg1: " & Arg1 & ", Arg2: " & Arg2) End If End If End With End Sub
Dans un module régulier, vous pouvez démarrer/arrêter la gestion des événements avec ceci:
Public newPPTEvents As New clsPPTEvents Sub StartEvents() Set newPPTEvents.PPTEvent = Application End Sub Sub EndEvents() Set newPPTEvents.PPTEvent = Nothing End Sub
Notez que dans le code # 2, il ne fonctionne pas à cause de ce que GetCursorPos renvoie, qui est l'écran X, Y.En regardant l'événement, il apparaît que ce que le GetChartElement veut, c'est soit les coordonnées de la fenêtre de délimitation de la fenêtre ou du volet, soit simplement le graphique lui-même.
Merci pour les réponses Otaku et la spéléologie! Dans notre cabinet nous faisons beaucoup de présentations avec des graphiques intégrés et cela a été un développement douloureux. 2007 Le SP2 a amélioré le OM (+) et a causé plus de plantage du graphique (-) mais ils ont tout de même laissé des trous. Exemple: vous pouvez dire qu'un utilisateur a cliqué sur un graphique mais que vous ne pouvez pas dire quel élément de graphique est sélectionné. Je n'ai pas encore essayé cela en 2010. –
J'ai fait un peu plus de vérification à ce sujet. Il semble que, bien que la méthode GetChartElement soit disponible dans PPT, elle ne peut pas (facilement?) Être accédée en raison de l'absence de tout événement qui fournirait les coordonnées X, Y (fenêtre, pas écran) appropriées. Il y a beaucoup d'exemples qui fonctionnent bien pour Excel, mais les mêmes ne fonctionnent pas dans PowerPoint. J'ai essayé de jouer avec l'appel d'API GetCursorPos et l'événement WindowSelectionChange pour obtenir les valeurs X, Y, mais je n'ai pas eu beaucoup de chance. Cela semble être un oubli complet de Microsoft pour rendre cette méthode disponible, mais rendue inutile dans PowerPoint. –
Powerpoint n'a jamais été une plate-forme populaire pour le développement VBA. Je peux comprendre l'abandon des fonctionnalités de l'interface utilisateur pour VBA dans ce contexte. Tt est très facile d'inclure le support de VBA pour Powerpoint sur la force d'Excel et Word - qui ne disparaîtra pas bientôt, voire pas du tout. Mon argent sera sur le support d'héritage à long terme, avec l'assistance pauvre ou inexistante de Microsoft pour des problèmes. Rappelez-vous que la MS est une question de compatibilité descendante - et ils sont très prudents lorsqu'ils la laissent tomber.
Je pense que ces commentaires sont en grande partie vrai. Je pense que la question du macro enregistreur est plus complexe. Si vous creusez, vous trouverez diverses références de Microsoft indiquant que lorsqu'elles ont refait le graphique et façonné des parties de l'OM en 2007, cela a eu un effet sur le code de l'enregistreur de macros. –
Je suis d'accord PPT est bien en dessous d'autres vba. Par-dessus tout, il semble bogué voir Weird bug on powerpoint vba
événement modèle est maladroit comme aucune exécution automatique How to automatically trigger the App Object initialization in Powerpoint?
auto_open est possible que de manière circumvoluted en créant un Addin ce que sur les utilisateurs qui reçoit votre ppt et ne savent pas comment installer le plugin :(
Je ne suis pas d'accord avec cette réponse. Il semble que vous avez reçu la réponse à la question que vous avez liée ... http://skp.mvps.org/autoevents.htm Aussi, pourquoi créer un addin est-il une "mauvaise chose"? Dans presque tous les environnements dans lesquels j'ai travaillé, vous voulez vous assurer que tous les utilisateurs ont accès au code, donc empaqueter le code avec le fichier ppt est une mauvaise pratique. –
Voir ce article pour résumer pourquoi VSTO est le chemin à parcourir. Compares avec VBA pour Excel, mais même chose vaut pour Powerpoint aussi.
Votre article est une bonne discussion sur VBA vs VSTO; Cependant, cela ne répond pas à la question, qui tourne autour de l'automatisation PowerPoint et de son support. – Mathias
Ouais d'accord avec Mathias, je pense que je devrais vraiment vous downvote, mais le lien était de qualité. :) Je suis sûr que les autres ne seront pas si gentils si vous laissez votre réponse. xie xie pour le lien Bhuvan –
2012 est passé et maintenant avec Office 2013 ..... bien Programmation avec le DataModel OM Un nouveau modèle objet DataModel (faisant partie du modèle objet VBA) vous permet de charger et de rafraîchir par programme les sources de données. – mooseman
- 1. avenir du développement mobile
- 2. Post avenir? Comment?
- 3. Avenir du SAP RFC SDK
- 4. Avenir de Java et JavaFx
- 5. Comment créer un addin pour PowerPoint 2003
- 6. Avenir de IE9: Opacité + Performance
- 7. Avenir avec HTML5 et CSS3
- 8. Avenir des données dynamiques Asp.Net
- 9. Avenir de l'axe 2 pour le développement de services Web
- 10. À quoi utiliseriez-vous un «avenir» dans App Engine?
- 11. avenir épreuvage version Java script ant l'enregistrement
- 12. . Composant Powerpoint
- 13. Outils pour manipuler des fichiers PowerPoint
- 14. Comment ouvrir un fichier PowerPoint avec PHP
- 15. Exemple simple de créer un fichier PowerPoint
- 16. Exporter de PowerPoint vers un gif animé?
- 17. Comment automatiser l'orthographe PowerPoint?
- 18. Lien symbolique Diapositives PowerPoint
- 19. Delphi et PowerPoint
- 20. C# Problèmes Powerpoint SlideShowEnd
- 21. Contrôle du diaporama PowerPoint
- 22. PowerPoint ExportAsFixedFormat dans Powershell
- 23. Far avenir expire en-tête et HTTP 304
- 24. VSTO PowerPoint/Excel interaction
- 25. Naviguer par programmation PowerPoint
- 26. CustomXML In Powerpoint
- 27. Schema/DTD de PowerPoint
- 28. PowerPoint ExportAsFixedFormat exception
- 29. html table to powerpoint
- 30. PowerPoint 2010 VSTO Question
Ceci est très vieux, mais pour d'autres (comme moi-même) Pour des façons de travailler avec PowerPoint (ou d'autres programmes Office) par programme cela peut être intéressant: https://github.com/NetOfficeFw/NetOffice – RenniePet