Bonjour,
Dans une appli msproject (mais cela peut être le cas dans toute autre appli office), je souhaite permettre l'ouverture automatique d'une présentation powerpoint en cliquant sur le bouton d'un userform.
Le problème est le suivant :
Mon code doit pouvoir tourner sur des applis office32 (project 2007, office 2007) et office 64 (project 2010, office 2010).
Après analyse, j'ai étudié plusieurs possibilités :
- utilisation de la commande shell
Mais je dois connaitre la version d'office que possède l'utilisateur, et surtout, l'emplacement de l'exécutable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Shell("C:\Program Files\Microsoft Office\Office14\POWERPNT.EXE", 1)
Bon, je me dis que en passant par les variables d'environnement, on devrait peut-être trouver l'emplacement du répertoire.
en fouillant un peu, je crois avoir trouvé mon bonheur
Mais cela ne me donne que l'adresse des répertoires programme, et non ceux de Office.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 EnvString = Environ("ProgramFiles") EnvString = Environ("ProgramW6432")
si je dois faire une recherche à partir des sous-répertoire, ça va être très long ...
- utilisation de l'automation :
On utilise les fonctions natives de Powerpoint
le problème, c'est qu'il faut ajouter la référence à la librairie objet de powerpoint. et je souhaiterais que les utilisateurs n'aient pas à le faire manuellement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Dim docpres As String Dim pptApp As PowerPoint.Application docpres = "<emplacement de mon fichier pptx>" Set pptApp = New PowerPoint.Application pptApp.Presentations.Open docpres pptApp.Visible = True
J'ai vu qu'il y avit 2méthodes possibles :
AddFromFile
mais là, je me retrouve avec le même problème que ci-dessus
Code : Sélectionner tout - Visualiser dans une fenêtre à part References.AddFromFile("<ma bibliothèque .OLB> ")
AddFromGuid
Mais comment l'identifier ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.VBE.ActiveVBProject.References.AddFromGuid("{Référence au .olb}", 5, 0)
Pour moi, la solution serait de connaitre l'adresse complète du répertoire office actif. Etant donnée que nous sommes dans un environnement Microsoft, je pense qu'il doit exister un objet dédié. mais lequel ?
Merci d'avance pour vos réponses éclairées
Partager