none
Ayuda con referencia a office RRS feed

  • Pregunta

  • Buenas noches.

    acabo de renovar el software de mi computadora e instale el visual studio 2017 junto con office 2016, el problema es que tengo aplicaciones que desarrolle en visual studio 2010 junto con referencias de office 2010 y quisiera saber si al actualizar el software afecto mi aplicacion y tengo que hacer algun downgrade

    miércoles, 5 de julio de 2017 0:01

Respuestas

  • "RHCRD" escribió:

    > yo habia mencionado que tenia office 2016 pero me habian dicho que tenia que
    > tener office 2010 para poder ejecutar el programa que tiene la referencia de
    > excel 2010 asi que desinstale office 2016 e isntale 2010 pero el problema no
    > se corrigio, y en las referencias las PIAs de excel 2010 pero en COM tengo
    > Microsoft Excel 14.0 Object Library no se si deba cambiar a esa referencia,
    > no quisiera que mi programa dejara de funcionar o tener que hacer grandes
    > cambios a todo el programa, ademas de que los equipos en los que esta implementado
    > el programa tienen office 2010

    Pregunto yo: ¿has leído el contenido de los enlaces que te he indicado en mi respuesta anterior, concretamente el siguiente, que está traducido al castellano?

    Tutorial: Incrustar información de tipos de los ensamblados de Microsoft Office (C# y Visual Basic)

    Ahí se puede leer claramente lo siguiente:

    [...] Si se incrusta información de tipos en una aplicación que hace referencia a objetos COM, puede eliminar la necesidad de contar con un ensamblado de interoperabilidad primario (PIA). Además, la información de tipos incrustada permite conseguir la independencia de la versión para la aplicación. Es decir, el programa se puede escribir de forma que use los tipos de distintas versiones de una biblioteca COM sin requerir un ensamblado de interoperabilidad primario específico para cada versión. Este es un escenario común para las aplicaciones que usan objetos de las bibliotecas de Microsoft Office. Al incrustar información de tipos se permite que la misma compilación de un programa funcione con versiones distintas de Microsoft Office en equipos diferentes sin necesidad de volver a implementar el programa o el ensamblado de interoperabilidad primario para cada versión de Microsoft Office.

    ...

    Nota La aplicación creada en este tutorial se ejecuta con distintas versiones de Microsoft Office debido a la información de tipos de interoperabilidad incrustada. Si la propiedad Embed Interop Types (Incrustar Tipos de Interoperabilidad) está establecida en False, debe incluir un ensamblado de interoperabilidad primario para cada versión de Microsoft Office con la que se ejecutará la aplicación.[...]

    Como te indiqué anteriormente, tú tienes que hacer referencia a la biblioteca de Microsoft Excel que deseas utilizar, y mientras que la propiedad Incrustar Tipos de Interoperabilidad esté establecida en True, no te tienes que preocupar de las diferentes versiones de Excel que se encuentren instaladas en los equipos cliente.

    Cuando se establece el valor True a la propiedad comentada, lo que hace el compilador es incrustar en el ejecutable final todas las interfaces existentes en la biblioteca de objetos de Excel, precisamente para no tener que depender de la versión concreta de Excel que pueda estar instalada en el equipo cliente. Pero si su valor es False, entonces no se incrusta nada en el ejecutable final y se añadirá a la carpeta de destino (Debug o Release) el ensamblado de Excel cuya versión se haya referenciado, versión ésta que deberá de estar también instalada en el cliente.

    Por supuesto, si en tu proyecto añades una característica de Excel que solamente está disponible en la versión 2016, no esperes que vaya a funcionar en aquellos clientes que no tengan instalado Microsoft Excel 2016, como bien creo que se podrá comprender, con independencia del valor que tenga la propiedad Incrustar Tipos de Interoperabilidad.

    Si dices que en los equipos finales tienen instalado Excel 2010, referencia en tu proyecto la biblioteca COM de Microsoft Excel 2010 y establece el valor True a la propiedad Incrustar Tipos de Interoperabilidad. Podrías también referenciar la de Excel 2016 que en teoría debería de funcionar en los equipos cliente, pero mejor que no la referencies por si haces uso sin darte cuenta de alguna característica de Excel 2016 que no se encuentra disponible en Excel 2010. ¿Me explico? ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    • Editado Enrique M. MontejoModerator miércoles, 5 de julio de 2017 21:50
    • Marcado como respuesta RHCRD miércoles, 5 de julio de 2017 23:25
    • Desmarcado como respuesta RHCRD miércoles, 5 de julio de 2017 23:50
    • Marcado como respuesta RHCRD jueves, 6 de julio de 2017 0:11
    miércoles, 5 de julio de 2017 21:48
    Moderador
  • "RHCRD" escribió:

    > ...tambien actualice de office 2010 a office 2016...
    > no la tome de la pestaña com la habia tomado de la pestaña net pero ahora no la encuentro

    Si estás buscando el componente .NET para Excel 2016 supuestamente llamado 'Microsoft.Office.Interop.Excel 16.0.0.0', que yo sepa no existe, salvo que yo esté equivocado, claro está.

    Te aparecen lo que se conocen como PIAs (Ensamblados de Interoperabilidad Primarios) para Excel 2010 (14.0.0.0) y 2013 (15.0.0.0), pero no el de Office 2016. No te preocupes que a mí tampoco me aparecen en mi equipo y también tengo instalado Office 2016. ;-)

    El tema está en que esto hace tiempo que cambió, y ahora resulta que se aconseja referenciar el componente COM de la aplicación de Office que deseas utilizar en tu proyecto. Para ello, y si dices que tienes instalado Office 2016, vete a la pestaña COM y selecciona el componente Microsoft Excel 16.0 Object Library, tal y como aparece en la siguiente imagen:


    Una vez añadida la referencia, selecciónala en la ventana Explorador de Soluciones de Visual Studio y pulsa la tecla F4. Procura que el valor Incrustar tipos de Interoperabilidad se encuentre establecido a True.

    Para más información al respecto, échale un vistazo a los siguiente enlaces:

    How to: Add References to Type Libraries

    Tutorial: Incrustar información de tipos de los ensamblados de Microsoft Office (C# y Visual Basic)

    Can I still use Microsoft.Office.Interop assemblies with office 2013?


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    miércoles, 5 de julio de 2017 19:08
    Moderador
  • "RHCRD" escribió:

    > pero entonces que tengo que hacer para seguir haciendo programas que
    > utilicen referencia a excel si no puedo encontrar esa misma referencia?
    >
    > debo seleccionar el componente COM  Microsoft Excel 14.0 Object Library ?
    > y si lo uso, funcionara exactamente de la misma manera que cuando usaba
    > la referencia Microsoft.Office.Interop.Excel 14.0.0.0

    Me vas a disculpar pero no se ya cómo explicártelo. :-(

    Tienes que referenciar la versión de la biblioteca de Excel que tengas instalada y desees utilizar, bien sea el componente COM o .NET, porque en definitiva se TRATA DE LA MISMA VERSIÓN DE EXCEL; no quiere decir que Microsoft Excel 14.0 Object Library sea una versión de Excel y Microsoft.Office.Interop.Excel 14.0.0.0 sea otra versión diferente. ES LA MISMA VERSIÓN: Microsoft Excel 2010.

    Pero si deseas que tu aplicación sea INDEPENDIENTE de la versión de Excel que pudiera estar instalada en los equipos cliente, cuando referencies el componente COM o NET que estimes necesario (2007, 2010, 2013 o 2016), procura que el valor de la propiedad Incrustar Tipos de Interoperabilidad de la referencia seleccionada se encuentre establecido en True, porque si se encuentra establecida en False, entonces necesitarás que los equipos cliente tenga instalada la misma versión de Microsoft Excel que se encuentra referenciada en tu proyecto de Visual Basic .NET o de C#, si fuera éste último el caso.

    Y con independencia de la versión de Microsoft Excel que referencies, procura NO UTILIZAR objetos, métodos y propiedades que no se encuentren disponibles en versiones de Excel inferiores a aquella que has referenciado en tu proyecto, porque como te indiqué anteriormente, si tu intención es que exista independencia de versiones, no puedes hacer uso en tu aplicación de un objeto, método o propiedad que es nueva en Excel 2016, porque obtendrás el correspondiente error en aquellos clientes que no tengan instalado en sus equipos Microsoft Excel 2016.

    Por ponerte un símil un tanto descabellado, es como si dispones de un teléfono móvil de hace 20 años y pretendes enviar mensajes desde el mismo haciendo uso de una famosa aplicación de mensajería instantánea. Pues va a ser que no, porque lo más seguro es que esa aplicación no se pueda instalar en un teléfono de la "edad de piedra". :-))


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta RHCRD jueves, 6 de julio de 2017 14:36
    jueves, 6 de julio de 2017 7:07
    Moderador

Todas las respuestas

  • Hola:

    Si la maquina donde tienes el Visual Studio tiene una version diferente de Office de la maquina donde se ejecuta, NO te funcionara.
    Las versiones de Office tiene que ser iguales

    Un saludo desde Bilbo
    Carlos
    • Propuesto como respuesta Jorge TurradoMVP miércoles, 5 de julio de 2017 6:07
    • Marcado como respuesta RHCRD miércoles, 5 de julio de 2017 14:17
    • Desmarcado como respuesta RHCRD miércoles, 5 de julio de 2017 15:55
    • Votado como útil Enrique M. MontejoModerator miércoles, 5 de julio de 2017 21:58
    miércoles, 5 de julio de 2017 5:43
  • Buenos días, al crear las referencias Office las asocia con la verisón instalada de Office, lo cual te obliga a actualizar las referencias de Office del proyecto.

    Cómo dice Carlos, sólo funcionará en los PCs que tengan la misma versión de Office.

    Un saludo.

    miércoles, 5 de julio de 2017 9:39
  • ni modo, a hacer downgrade a office
    • Editado RHCRD miércoles, 5 de julio de 2017 14:18
    miércoles, 5 de julio de 2017 14:18
  • ya hice el downgrade y sigue sucediendo lo mismo 

    "El espacio de nombres o tipo especificado en el 'Mocrosoft.Office.Interop.Excel' no contienen ningun miembro publico o no se encuentran."

    miércoles, 5 de julio de 2017 15:58
  • Buenas tardes tengo el siguiente problema, acabo de actualizar de visual studio 2010 a visual studio 2017 y tambien actualice de office 2010 a office 2016 y al abrir un proyecto que habia hecho en visual 2010 vi que me salia el siguiente error

    El espacio de nombres o tipo especificado en el 'Mocrosoft.Office.Interop.Excel' no contienen ningún miembro publico o no se encuentran

    me dijeron que tenia que tener la misma version de office en la que agregue la referencia, y ya instale office 2010 y sigo con el mismo problema

    miércoles, 5 de julio de 2017 17:30
  • Hola, porque no quitas la referencia y vueles a agregarla, fíjate la ruta de donde esta tomando.

    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Solo dejo mis respuestas en el foro si son votadas o respuesta, de lo contrario por mantener el orden las borro.Saludos. Lima-Perú.

    miércoles, 5 de julio de 2017 17:43
  • "RHCRD" escribió:

    > El espacio de nombres o tipo especificado en el 'Mocrosoft.Office.Interop.Excel'
    > no contienen ningún miembro publico o no se encuentran

    Hola:

    El espacio de nombres es Microsoft..., no 'Mocrosoft...', aunque me imagino que habrá sido un error al escribir el mensaje, porque en la imagen que has adjuntado aparece el espacio de nombres bien importado:

    Imports Excel = Microsoft.Office.Interop.Excel

    Pero observarás que bajo el nombre aparece una línea ondulada indicadora de que no es necesario importar tal espacio de nombres, simplemente porque NO EXISTE una referencia en el proyecto a un ensamblado que contenga dicho espacio de nombres.

    Es más, si te fijas en la ventana Referencias que aparece a la derecha de la imagen, observarás que hay un triángulo amarillo, que te está diciendo que no existe el archivo de dicho ensamblado en la ruta indicada.

    Así que, asegúrate que exista el ensamblado Microsoft.Office.Interop.Excel.dll en la ruta que aparece en las Referencias de tu proyecto.

    Lo que puedes hacer es eliminar dicha referencia y crearla de nuevo. Para ello, desde el cuadro de diálogo Referencias, pulsa el botón Examinar... y dirígete a la carpeta que contenga el ensamblado Microsoft.Office.Interop.Excel.dll que deseas añadir a tu proyecto de Visual Basic .net.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    miércoles, 5 de julio de 2017 17:48
    Moderador
  • como puedo ver la ruta de donde la esta tomando?

    miércoles, 5 de julio de 2017 17:50
  • como puedo ver la ruta de donde la esta tomando?

    click derecho sobre el elemento en propiedades,aunque como te han indicado el dll no esta en esa ruta, por ahi que puedes agregar la referencia dando click derecho en referencias ,-->agregar referencia y en la pestaña de com podría estar.

    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Solo dejo mis respuestas en el foro si son votadas o respuesta, de lo contrario por mantener el orden las borro.Saludos. Lima-Perú.

    • Editado Augusto1982 miércoles, 5 de julio de 2017 18:29
    miércoles, 5 de julio de 2017 17:54
  • no la tome de la pestaña com la habia tomado de la pestaña net pero ahora no la encuentro

    miércoles, 5 de julio de 2017 18:48
  • "no la tome de la pestaña com la habia tomado de la pestaña net pero ahora no la encuentro.."

    En la primera pantalla esta la ruta cópiala y en tu otro proyecto con esa ruta dale en examinar para buscarla.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Solo dejo mis respuestas en el foro si son votadas o respuesta, de lo contrario por mantener el orden las borro.Saludos. Lima-Perú.


    • Editado Augusto1982 miércoles, 5 de julio de 2017 19:20
    miércoles, 5 de julio de 2017 18:57
  • "RHCRD" escribió:

    > ...tambien actualice de office 2010 a office 2016...
    > no la tome de la pestaña com la habia tomado de la pestaña net pero ahora no la encuentro

    Si estás buscando el componente .NET para Excel 2016 supuestamente llamado 'Microsoft.Office.Interop.Excel 16.0.0.0', que yo sepa no existe, salvo que yo esté equivocado, claro está.

    Te aparecen lo que se conocen como PIAs (Ensamblados de Interoperabilidad Primarios) para Excel 2010 (14.0.0.0) y 2013 (15.0.0.0), pero no el de Office 2016. No te preocupes que a mí tampoco me aparecen en mi equipo y también tengo instalado Office 2016. ;-)

    El tema está en que esto hace tiempo que cambió, y ahora resulta que se aconseja referenciar el componente COM de la aplicación de Office que deseas utilizar en tu proyecto. Para ello, y si dices que tienes instalado Office 2016, vete a la pestaña COM y selecciona el componente Microsoft Excel 16.0 Object Library, tal y como aparece en la siguiente imagen:


    Una vez añadida la referencia, selecciónala en la ventana Explorador de Soluciones de Visual Studio y pulsa la tecla F4. Procura que el valor Incrustar tipos de Interoperabilidad se encuentre establecido a True.

    Para más información al respecto, échale un vistazo a los siguiente enlaces:

    How to: Add References to Type Libraries

    Tutorial: Incrustar información de tipos de los ensamblados de Microsoft Office (C# y Visual Basic)

    Can I still use Microsoft.Office.Interop assemblies with office 2013?


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    miércoles, 5 de julio de 2017 19:08
    Moderador
  • yo habia mencionado que tenia office 2016 pero me habian dicho que tenia que tener office 2010 para poder ejecutar el programa que tiene la referencia de excel 2010 asi que desinstale office 2016 e isntale 2010 pero el problema no se corrigio, y en las referencias las PIAs de excel 2010 pero en COM tengo Microsoft Excel 14.0 Object Library no se si deba cambiar a esa referencia, no quisiera que mi programa dejara de funcionar o tener que hacer grandes cambios a todo el programa, ademas de que los equipos en los que esta implementado el programa tienen office 2010
    miércoles, 5 de julio de 2017 20:15
  • Hola:

    ¿Porque no usas una libreria que hace uso de OpenXml (las hay gratuitas)?
    Ejemplos de esta pueden ser SpreadsheetLight, ClosedXML, Spire_XLS, etc.
    Te evitaras tener instalado el Office, o tener diferentes versiones de Office para que tu programa funcione en cualquier maquina.

    Un saludo desde Bilbo
    Carlos
    miércoles, 5 de julio de 2017 20:22
  • pues suena interesante lo que mencionas pero creo que eso seria para futuros desarrollos por que me imagino que si implemento una libreria open xml tendria que hacer muchas modificaciones al codigo o me equivoco?
    miércoles, 5 de julio de 2017 20:47
  • "RHCRD" escribió:

    > yo habia mencionado que tenia office 2016 pero me habian dicho que tenia que
    > tener office 2010 para poder ejecutar el programa que tiene la referencia de
    > excel 2010 asi que desinstale office 2016 e isntale 2010 pero el problema no
    > se corrigio, y en las referencias las PIAs de excel 2010 pero en COM tengo
    > Microsoft Excel 14.0 Object Library no se si deba cambiar a esa referencia,
    > no quisiera que mi programa dejara de funcionar o tener que hacer grandes
    > cambios a todo el programa, ademas de que los equipos en los que esta implementado
    > el programa tienen office 2010

    Pregunto yo: ¿has leído el contenido de los enlaces que te he indicado en mi respuesta anterior, concretamente el siguiente, que está traducido al castellano?

    Tutorial: Incrustar información de tipos de los ensamblados de Microsoft Office (C# y Visual Basic)

    Ahí se puede leer claramente lo siguiente:

    [...] Si se incrusta información de tipos en una aplicación que hace referencia a objetos COM, puede eliminar la necesidad de contar con un ensamblado de interoperabilidad primario (PIA). Además, la información de tipos incrustada permite conseguir la independencia de la versión para la aplicación. Es decir, el programa se puede escribir de forma que use los tipos de distintas versiones de una biblioteca COM sin requerir un ensamblado de interoperabilidad primario específico para cada versión. Este es un escenario común para las aplicaciones que usan objetos de las bibliotecas de Microsoft Office. Al incrustar información de tipos se permite que la misma compilación de un programa funcione con versiones distintas de Microsoft Office en equipos diferentes sin necesidad de volver a implementar el programa o el ensamblado de interoperabilidad primario para cada versión de Microsoft Office.

    ...

    Nota La aplicación creada en este tutorial se ejecuta con distintas versiones de Microsoft Office debido a la información de tipos de interoperabilidad incrustada. Si la propiedad Embed Interop Types (Incrustar Tipos de Interoperabilidad) está establecida en False, debe incluir un ensamblado de interoperabilidad primario para cada versión de Microsoft Office con la que se ejecutará la aplicación.[...]

    Como te indiqué anteriormente, tú tienes que hacer referencia a la biblioteca de Microsoft Excel que deseas utilizar, y mientras que la propiedad Incrustar Tipos de Interoperabilidad esté establecida en True, no te tienes que preocupar de las diferentes versiones de Excel que se encuentren instaladas en los equipos cliente.

    Cuando se establece el valor True a la propiedad comentada, lo que hace el compilador es incrustar en el ejecutable final todas las interfaces existentes en la biblioteca de objetos de Excel, precisamente para no tener que depender de la versión concreta de Excel que pueda estar instalada en el equipo cliente. Pero si su valor es False, entonces no se incrusta nada en el ejecutable final y se añadirá a la carpeta de destino (Debug o Release) el ensamblado de Excel cuya versión se haya referenciado, versión ésta que deberá de estar también instalada en el cliente.

    Por supuesto, si en tu proyecto añades una característica de Excel que solamente está disponible en la versión 2016, no esperes que vaya a funcionar en aquellos clientes que no tengan instalado Microsoft Excel 2016, como bien creo que se podrá comprender, con independencia del valor que tenga la propiedad Incrustar Tipos de Interoperabilidad.

    Si dices que en los equipos finales tienen instalado Excel 2010, referencia en tu proyecto la biblioteca COM de Microsoft Excel 2010 y establece el valor True a la propiedad Incrustar Tipos de Interoperabilidad. Podrías también referenciar la de Excel 2016 que en teoría debería de funcionar en los equipos cliente, pero mejor que no la referencies por si haces uso sin darte cuenta de alguna característica de Excel 2016 que no se encuentra disponible en Excel 2010. ¿Me explico? ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    • Editado Enrique M. MontejoModerator miércoles, 5 de julio de 2017 21:50
    • Marcado como respuesta RHCRD miércoles, 5 de julio de 2017 23:25
    • Desmarcado como respuesta RHCRD miércoles, 5 de julio de 2017 23:50
    • Marcado como respuesta RHCRD jueves, 6 de julio de 2017 0:11
    miércoles, 5 de julio de 2017 21:48
    Moderador
  • Ya te entendi.

    lo que me querias decir es que la referencia de excel ya estaba incrustada cuando desarrolle la aplicacion en visual 2010 y por lo tanto ya no la necesitaba para ejecutarla ahora con visual 2017 y tenias razon, ejecuto sin problemas el programa.

    pero entonces que tengo que hacer para seguir haciendo programas que utilicen referencia a excel si no puedo encontrar esa misma referencia?

    debo seleccionar el componente COM  Microsoft Excel 14.0 Object Library ? y si lo uso, funcionara exactamente de la misma manera que cuando usaba la referencia Microsoft.Office.Interop.Excel 14.0.0.0

    o debo de intentar buscar el dll con el mismo nombre de la referencia, copiarla y agregarla manualmente?

    o usar de ahora en adelante las librerias OpenXML que sugirio J. Carlos Herrero

    De antemano muchisimas gracias por la informacion me ah sido muy util.



    • Editado RHCRD jueves, 6 de julio de 2017 0:29
    jueves, 6 de julio de 2017 0:11
  • "RHCRD" escribió:

    > pero entonces que tengo que hacer para seguir haciendo programas que
    > utilicen referencia a excel si no puedo encontrar esa misma referencia?
    >
    > debo seleccionar el componente COM  Microsoft Excel 14.0 Object Library ?
    > y si lo uso, funcionara exactamente de la misma manera que cuando usaba
    > la referencia Microsoft.Office.Interop.Excel 14.0.0.0

    Me vas a disculpar pero no se ya cómo explicártelo. :-(

    Tienes que referenciar la versión de la biblioteca de Excel que tengas instalada y desees utilizar, bien sea el componente COM o .NET, porque en definitiva se TRATA DE LA MISMA VERSIÓN DE EXCEL; no quiere decir que Microsoft Excel 14.0 Object Library sea una versión de Excel y Microsoft.Office.Interop.Excel 14.0.0.0 sea otra versión diferente. ES LA MISMA VERSIÓN: Microsoft Excel 2010.

    Pero si deseas que tu aplicación sea INDEPENDIENTE de la versión de Excel que pudiera estar instalada en los equipos cliente, cuando referencies el componente COM o NET que estimes necesario (2007, 2010, 2013 o 2016), procura que el valor de la propiedad Incrustar Tipos de Interoperabilidad de la referencia seleccionada se encuentre establecido en True, porque si se encuentra establecida en False, entonces necesitarás que los equipos cliente tenga instalada la misma versión de Microsoft Excel que se encuentra referenciada en tu proyecto de Visual Basic .NET o de C#, si fuera éste último el caso.

    Y con independencia de la versión de Microsoft Excel que referencies, procura NO UTILIZAR objetos, métodos y propiedades que no se encuentren disponibles en versiones de Excel inferiores a aquella que has referenciado en tu proyecto, porque como te indiqué anteriormente, si tu intención es que exista independencia de versiones, no puedes hacer uso en tu aplicación de un objeto, método o propiedad que es nueva en Excel 2016, porque obtendrás el correspondiente error en aquellos clientes que no tengan instalado en sus equipos Microsoft Excel 2016.

    Por ponerte un símil un tanto descabellado, es como si dispones de un teléfono móvil de hace 20 años y pretendes enviar mensajes desde el mismo haciendo uso de una famosa aplicación de mensajería instantánea. Pues va a ser que no, porque lo más seguro es que esa aplicación no se pueda instalar en un teléfono de la "edad de piedra". :-))


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta RHCRD jueves, 6 de julio de 2017 14:36
    jueves, 6 de julio de 2017 7:07
    Moderador
  • Muchas gracias Enrique M. Montejo

    Me ha quedado mas claro. mi unico temor era que pensaba que el componente COM y el NET eran diferentes y que no podría usar las mismas expresiones/funciones pero ahora se que puedo usar cualquiera de los dos. Lo de tener incrustada la referencia ya me había quedado claro, de hecho, me parece que esa opción esta habilitada en TRUE por default, también me había quedado claro que no puedo usar funciones exclusivas de Exel 2016 en Excel 2010 es por eso que quiero usar la referencia que corresponde a Excel 2010 para no usar metodos de otras versiones superiores por accidente.

    te agradesco mucho el tiempo que te tomaste en responder mi problema.

    jueves, 6 de julio de 2017 14:44