none
no se pudo abrir el archivo el proveedor microsoft.jet.oledb.12.0 no esta registrado en el equipo local

    Pregunta

  • Estimados, estoy teniendo este problema hace ya un par de días y no logro tener una solución. 

    El Problema "no se pudo abrir el archivo el proveedor microsoft.jet.oledb.12.0 no esta registrado en el equipo local"

    Estoy trabajando con Visual .Net 2010 en un aplicación que lee un archivo xlsx con la siguiente cadena de conexión (Dim scs2010 As String = "provider=Microsoft.jet.OLEDB.12.0; " & "datasource=" & cadena & "; Excel 12.0; IMEX=1; HDR=YES")

    Ya he desinstalado todos los programas relacionados con oficce, he instalado los programas típicos para este problema como AccessDatabaseEngine, etc., luego de instalarlos reinicio el equipo he intento nuevamente y todo sigue igual, el mensaje vuelve a aparecer. 

    Estoy usando Windows 10 

    Les agradezco si me pueden ayudar a tener una solución ya que no se que más puedo hacer 

    Saludos para todos desde Uruguay 

    sábado, 29 de octubre de 2016 15:19

Respuestas

  • Hola:

    Prueba con esta cadena:

    Using cnx As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & rut & ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'")

    Un cordial saludo.

    Gemma

    sábado, 29 de octubre de 2016 15:41
  • "Marcelo_UY" escribió:

    > La plataforma de destino está en x86 ya lo había probado.
    >
    > Sigo con el mismo problema obviamente ahora en vez de decir
    >
    > "no se pudo abrir el archivo el proveedor microsoft.jet.oledb.12.0
    > no esta registrado en el equipo local"
    >
    > dice
    >
    > "no se pudo abrir el archivo el proveedor microsoft.ace.oledb.12.0 no
    > esta registrado en el equipo local"
    >
    > no se que hacer

    Hola, Marcelo:

    Simplemente tienes que compilar tu aplicación .NET para que la CPU de destino coincida con la versión de los Componentes de acceso a datos del motor Microsoft Office 2007 o superior que tengas instalado en tu equipo.

    Es decir, si en tu equipo tienes instalado los Componentes de acceso a datos de Microsoft Office 2007 o superior de 64 bits, tienes que compilar tu proyecto para una CPU de destino x64, y si son de 32 bits, entonces tienes que compilar el proyecto para CPU de destino x86:

         Office de 32 bits --> x86
         Office de 64 bits --> x64

    Pero no compiles tu aplicación con el valor AnyCPU porque entonces puede que tengas problemas si la arquitectura de tu sistema operativo Windows no coincide con la arquitectura de Office 2007 o superior instalada en el equipo.

    Por cierto, la cadena de conexión correcta para conectarse con un libro de Excel 2007 o superior con extensión *.xlsx, sería la siguiente:

    Dim cadena As String = "C:\Mis documentos\Libro1.xlsx"    
    Dim scs2010 As String = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1';Data Source=" & cadena

    Y si la extensión del archivo es *.xlsb (libro binario de Excel), entonces el formato de ISAM que deberás de utilizar es 'Excel 12.0'.

    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.

    domingo, 30 de octubre de 2016 6:19
    Moderador

Todas las respuestas

  • Prueba a descartar problema de plataforma, cambiando las propiedades de tu proyecto, en compilar (build) coloca el cpu destino a x86
    sábado, 29 de octubre de 2016 15:31
  • Hola:

    Prueba con esta cadena:

    Using cnx As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & rut & ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'")

    Un cordial saludo.

    Gemma

    sábado, 29 de octubre de 2016 15:41
  • La plataforma de destino está en x86 ya lo había probado. 

    Gracias Igual 

    sábado, 29 de octubre de 2016 15:52
  • Sigo con el mismo problema obviamente ahora en vez de decir 

    "no se pudo abrir el archivo el proveedor microsoft.jet.oledb.12.0 no esta registrado en el equipo local"

    dice 

    "no se pudo abrir el archivo el proveedor microsoft.ace.oledb.12.0 no esta registrado en el equipo local"

    no se que hacer 

    gracias igual por el aporte 

    sábado, 29 de octubre de 2016 15:56
  • "Marcelo_UY" escribió:

    > La plataforma de destino está en x86 ya lo había probado.
    >
    > Sigo con el mismo problema obviamente ahora en vez de decir
    >
    > "no se pudo abrir el archivo el proveedor microsoft.jet.oledb.12.0
    > no esta registrado en el equipo local"
    >
    > dice
    >
    > "no se pudo abrir el archivo el proveedor microsoft.ace.oledb.12.0 no
    > esta registrado en el equipo local"
    >
    > no se que hacer

    Hola, Marcelo:

    Simplemente tienes que compilar tu aplicación .NET para que la CPU de destino coincida con la versión de los Componentes de acceso a datos del motor Microsoft Office 2007 o superior que tengas instalado en tu equipo.

    Es decir, si en tu equipo tienes instalado los Componentes de acceso a datos de Microsoft Office 2007 o superior de 64 bits, tienes que compilar tu proyecto para una CPU de destino x64, y si son de 32 bits, entonces tienes que compilar el proyecto para CPU de destino x86:

         Office de 32 bits --> x86
         Office de 64 bits --> x64

    Pero no compiles tu aplicación con el valor AnyCPU porque entonces puede que tengas problemas si la arquitectura de tu sistema operativo Windows no coincide con la arquitectura de Office 2007 o superior instalada en el equipo.

    Por cierto, la cadena de conexión correcta para conectarse con un libro de Excel 2007 o superior con extensión *.xlsx, sería la siguiente:

    Dim cadena As String = "C:\Mis documentos\Libro1.xlsx"    
    Dim scs2010 As String = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1';Data Source=" & cadena

    Y si la extensión del archivo es *.xlsb (libro binario de Excel), entonces el formato de ISAM que deberás de utilizar es 'Excel 12.0'.

    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.

    domingo, 30 de octubre de 2016 6:19
    Moderador