Question

Nous créons une application Windows Form (C # ou VB.NET) qui doit référencer un objet Office 2003 ou Office 2007 COM, en fonction de la version de Office installée. Quel est le meilleur moyen de gérer ce scénario et de référencer le bon objet COM au moment de l’exécution?

Était-ce utile?

La solution

Sauf si vous souhaitez utiliser l'un des objets et méthodes nouvellement ajoutés du modèle objet Office 2007, vous pouvez créer un référentiel pour les PIA Office 2003, assurez-vous simplement que la version correcte des PIA est déployée sur le système cible:

  

Une autre solution à ce problème consiste à supprimer la dépendance vis-à-vis des PIA les plus récentes. En raison du degré élevé de compatibilité ascendante dans Office, vous pouvez sans risque supposer que si votre complément fonctionne avec Office 2003 (avec les PIA d'Office 2003), il doit également fonctionner avec Office 2007 (avec les PIA d'Office 2007).

     

(from Compléments pour plusieurs versions Office sans PIA par Andrew Whitechapel)

Sinon, je vous recommanderais les articles suivants de Andrew Whitechapel: Pouvez-vous créer un complément pour plusieurs versions d'Office? (voir l'avertissement BIG indiquant que cela n'est pas officiellement pris en charge par Microsoft).

Une autre option pour laquelle vous n'avez pas besoin des PIA (cela facilite beaucoup le déploiement) serait d'utiliser ComImport avec une liaison tardive. Cela est toutefois plus lent que l'utilisation des assemblys interop, mais si le code d'automatisation n'est pas sur la voie rapide, cela pourrait être une bonne solution. Vous trouverez une explication sur la manière de la mettre en œuvre dans le même article: Compléments pour plusieurs versions Office sans PIAs

Autres conseils

Les assemblages d'interopérabilité primaire pour Office ne vous aideraient-ils pas? Je ne sais pas avec certitude car je n'ai pas eu à les utiliser sérieusement, mais je pense qu'ils le feraient.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top