ERROR: Aparece el error "Formato antiguo o biblioteca de tipos no válida" al automatizar Excel

Seleccione idioma Seleccione idioma
Id. de artículo: 320369 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E320369
Expandir todo | Contraer todo

En esta página

Síntomas

Si se automatiza Microsoft Excel 2002 con Microsoft Visual Basic .NET, Microsoft Visual C# .NET o Microsoft Visual C++, puede aparecer el siguiente error al llamar a determinados métodos:
Error: 0x80028018 (-2147647512)
Descripción: Formato antiguo o biblioteca de tipos no válida

Causa

Aparece este error al llamar a un método de Excel cuando se cumplen las condiciones siguientes:
  • El método requiere un LCID (identificador regional).
  • Ejecuta una versión en inglés de Excel. Sin embargo, la configuración regional del equipo está establecida en un idioma distinto del inglés.
Si el equipo cliente ejecuta la versión en inglés de Excel y la configuración regional del usuario actual tiene establecido un idioma distinto del inglés, Excel intentará encontrar el paquete del idioma configurado. Si no encuentra el paquete de idioma, aparecerá el error.

Solución

Para solucionar temporalmente este problema puede utilizar uno de los métodos siguientes:
  • Instalar Multilingual User Interface Pack para su versión de Office.
  • Ejecutar el método o la propiedad de Excel utilizando InvokeMember para que pueda especificar la información CultureInfo para la llamada. Por ejemplo, el código siguiente muestra cómo puede invocar el método Add del objeto Workbooks con "en-US" como CultureInfo:
    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oBooks As Object = oApp.Workbooks
    Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")
    oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
    
  • O bien, establecer CultureInfo antes de llamar al método de Excel. Por ejemplo:
    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oldCI As System.Globalization.CultureInfo = _
        System.Threading.Thread.CurrentThread.CurrentCulture
    System.Threading.Thread.CurrentThread.CurrentCulture = _
        New System.Globalization.CultureInfo("en-US")
    oApp.Workbooks.Add()
    System.Threading.Thread.CurrentThread.CurrentCulture = oldCI

Cuando usa una de estas soluciones en un equipo donde la configuración regional no coincida con la versión de idioma actual de Office, debería estar familiarizado con el modo en que Excel se comporta e interpreta los datos que podrían tener el formato de una configuración regional concreta. Para obtener más detalles sobre cómo escribir soluciones de Excel globalizadas con Visual Studio .NET, consulte los artículos siguientes en MSDN:

Crear soluciones de Office para usar en varios países o regiones
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx
Problemas de globalización y localización para soluciones creadas con Microsoft Visual Studio Tools para Microsoft Office System
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx

Estado

Microsoft ha confirmado que se trata de un error de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a".

Más información

Pasos para reproducir este comportamiento

  1. Compruebe que la configuración regional del equipo está establecida en un idioma distinto del inglés.

    En Windows 2000:
    1. En el Panel de control de Windows, haga doble clic en Configuración regional y de idioma.
    2. En la ficha Opciones regionales, seleccione una ubicación y, después, haga clic en Aceptar.
    En Windows XP o Windows Server 2003:
    1. En el Panel de control, abra Configuración regional y de idioma.
    2. En la ficha Configuración regional, seleccione una configuración regional y, a continuación, haga clic en Aceptar.
  2. Inicie Microsoft Visual Studio .NET.
  3. En el menú Archivo, seleccione Nuevo y haga clic en Proyecto. En el cuadro de diálogo Nuevo proyecto, en Tipos de proyecto, haga clic en Proyectos de Visual Basic. En Plantillas, haga clic en Aplicación para Windows y, a continuación, haga clic en Aceptar. De forma predeterminada, se crea Form1.
  4. En el menú Ver, haga clic en Cuadro de herramientas y agregue un botón a Form1.
  5. Para mostrar la ventana de código del formulario, haga doble clic en Button1.
  6. En la ventana de código, reemplace el código siguiente
    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                              Handles Button1.Click
    End Sub
    					
    por:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oApp As Object
        Dim oDoc As Object
        oApp = CreateObject("Excel.Application")
        oApp.Visible = True
        oDoc = oApp.Workbooks.Add
        oDoc.Close()
        oApp.Quit()
        oDoc = Nothing
        oApp = Nothing
    End Sub
    					
  7. Agregue la línea de código siguiente al principio del módulo de código de Form1:
    Option Strict Off
  8. Presione F5 para generar y ejecutar el programa.
  9. Para generar el error, haga clic en Button1. El error se produce en la línea siguiente:
    oDoc = oApp.Workbooks.Add
    					

Referencias

Para obtener más información acerca de Automatización de Office, visite el siguiente sitio Web de desarrollo de Microsoft Office:
http://support.microsoft.com/ofd
Además, consulte los siguientes artículos de Microsoft Knowledge Base:
301982 Cómo automatizar Microsoft Excel desde Visual Basic .NET
302084 Cómo automatizar Microsoft Excel desde Microsoft Visual C# .NET

Propiedades

Id. de artículo: 320369 - Última revisión: miércoles, 09 de enero de 2008 - Versión: 8.3
La información de este artículo se refiere a:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C++ 6.1
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft Visual Studio Tools for the Microsoft Office System version 2003
Palabras clave: 
kbvs2002sp1sweep kbautomation kbbug kbpending KB320369

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com