Frage

Wir schaffen eine Windows-Forms-Anwendung (C # oder VB.NET), die ein Office 2003 oder Office 2007-COM-Objekt verweisen muss, je nach Version von Office installiert. Was ist der beste Weg, um dieses Szenario zu behandeln und das richtige COM-Objekt zur Laufzeit verweisen?

War es hilfreich?

Lösung

Wenn Sie eine der neu hinzugefügte Objekte und Methoden des Office 2007-Objektmodell verwenden möchten, ist es in Ordnung das Office 2003-PIAs zu bauen Referenzierung, so stellen Sie sicher, dass die richtige Version der PIA ist auf dem Zielsystem zum Einsatz:

  

Eine andere Möglichkeit, um dieses Problem ist die Abhängigkeit von den späteren PIAs zu entfernen. Aufgrund des hohen Grades an Rückwärtskompatibilität in Office, können Sie davon ausgehen, dass, wenn die Add-In funktioniert auf Office 2003 (mit dem Office 2003 PIAs), dann sollte es auch auf Office 2007 arbeitet (mit dem Office 2007 PIAs).

     

(von Add-Ins für mehrere Office-Versionen ohne PIAs von Andrew Whitechapel)

Ansonsten würde ich Ihnen den folgenden Blog-Artikel von Andrew Whitechapel empfehlen: können Sie ein Add-in für mehrere Versionen von Office bauen? (Siehe die große Warnung, dass dies nicht offiziell unterstützt wird von Microsoft).

Ein andere Möglichkeit, wo Sie die PIA nicht benötigen (dies macht Einsatz viel einfacher) ComImport zusammen mit später Bindung zu verwenden wäre. Dies ist jedoch langsamer als die Interopassemblys verwenden, aber wenn der Automatisierungscode nicht auf dem schnellen Weg könnte dies eine gute Lösung sein. Sie finden eine Erklärung finden, wie dies in der gleichen Blog-Post zu implementieren: Add-In für mehr Office-Versionen ohne PIAs

Andere Tipps

Würden die Primary Interop Assemblies für Office nicht helfen? Ich weiß nicht genau, wie ich sie nicht ernsthaft verwenden gehabt haben, aber ich denke, sie würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top