Pregunta

Estamos creando una aplicación Windows Form (C # o VB.NET) que necesita hacer referencia a un objeto COM de Office 2003 u Office 2007, según la versión de Office instalada. ¿Cuál es la mejor manera de manejar este escenario y hacer referencia al objeto COM correcto en el tiempo de ejecución?

¿Fue útil?

Solución

A menos que desee utilizar alguno de los objetos y métodos recién agregados del modelo de objetos de Office 2007, está bien construir una referencia a los PIA de Office 2003, solo asegúrese de que la versión correcta de los PIA esté implementada en el sistema de destino:

  

Otra forma de solucionar este problema es eliminar la dependencia de los PIA posteriores. Debido al alto grado de compatibilidad con versiones anteriores en Office, puede asumir con seguridad que si su complemento funciona en Office 2003 (con los PIA de Office 2003), también debería funcionar en Office 2007 (con los PIA de Office 2007).

     

(de Complementos para varias versiones de Office sin PIA por Andrew Whitechapel)

De lo contrario, le recomendaría los siguientes artículos de blog de Andrew Whitechapel: ¿Se puede crear un complemento para varias versiones de Office? (vea la GRAN advertencia de que esto no es oficialmente compatible por Microsoft).

Otra opción donde no necesita los PIA (esto hace que la implementación sea mucho más fácil) sería utilizar ComImport junto con el enlace tardío. Sin embargo, esto es más lento que usar los ensamblajes de interoperabilidad, pero si el código de automatización no está en la ruta rápida, esta podría ser una buena solución. Encontrará una explicación sobre cómo implementar esto en la misma publicación del blog: Complementos para múltiples versiones de Office sin PIA

Otros consejos

¿Los ensamblados de interoperabilidad primarios para Office no ayudarían con esto? No estoy seguro, ya que no he tenido que usarlos en serio, pero creo que lo harían.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top