Síntomas
Si automatiza Microsoft Excel con Microsoft Visual Basic .NET, Microsoft Visual C# .NET o Microsoft Visual C++, es posible que reciba el siguiente error al llamar a determinados métodos:
Error: 0x80028018 (-2147647512)Descripción: Formato antiguo o Biblioteca de tipos no válidos
Causa
Recibe este error llamando a un método de Excel cuando se cumplen las condiciones siguientes:
-
El método requiere un LCID (identificador de configuración regional).
-
Ejecuta una versión en inglés de Excel. Sin embargo, la configuración regional del equipo está configurada para un idioma que no es inglés.
Si el equipo cliente ejecuta la versión en inglés de Excel y la configuración regional del usuario actual está configurada para un idioma distinto del inglés, Excel intentará localizar el paquete de idioma para el idioma configurado. Si no se encuentra el paquete de idioma, se notificará el error.
Solución alternativa
Para solucionar este problema, puede usar uno de los siguientes métodos:
-
Instale el paquete de interfaz de usuario multilingüe para su versión de Office.
-
Ejecute el método o la propiedad de Excel mediante InvokeMember para que pueda especificar el CultureInfo para la llamada. Por ejemplo, en el código siguiente se muestra cómo se puede invocar el objeto Workbooks método Add con "en-US" como cultureinfo:
Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oBooks As Object = oApp.WorkbooksDim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
-
O bien, establezca el CultureInfo antes de llamar al método de Excel. Por ejemplo:
Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oldCI As System.Globalization.CultureInfo = _ System.Threading.Thread.CurrentThread.CurrentCultureSystem.Threading.Thread.CurrentThread.CurrentCulture = _ New System.Globalization.CultureInfo("en-US")oApp.Workbooks.Add()System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
-
Cree un directorio 1033 en Microsoft Office\Office11. Después, copie excel.exe en el directorio 1033 y cámbiele el nombre como xllex.dll. Para obtener más información, haga clic en el vínculo siguiente:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
Al usar una de estas soluciones alternativas para un equipo en el que la configuración regional no coincide con la versión de idioma actual de Office, debe estar familiarizado con el comportamiento de Excel y cómo interpretará Excel los datos a los que se puede dar formato para una configuración regional específica. Para obtener más información sobre cómo escribir soluciones globalizadas de Excel con Visual Studio .NET, consulte los siguientes artículos en MSDN:Creación de soluciones de Office para su uso en varios países o regiones
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxProblemas 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 en los productos de Microsoft que aparecen en la sección "Se aplica a".
Más información
Pasos para reproducir este comportamiento
-
Compruebe que la configuración regional del equipo esté establecida en un idioma distinto del inglés.Para Windows 2000:
-
En Windows Panel de control, haga doble clic en Opciones regionales.
-
En la pestaña General, seleccione una ubicación y, a continuación, haga clic en Aceptar.
Para Windows XP o Windows Server 2003:
-
En Panel de control, abra Configuración regional y de idioma.
-
En la pestaña Opciones regionales , seleccione una configuración regional y, a continuación, haga clic en Aceptar.
-
-
Inicie Microsoft Visual Studio .NET.
-
En el menú Archivo, seleccione Nuevo y, a continuación, 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 luego haga clic en Aceptar. De forma predeterminada, se crea Form1.
-
En el menú Ver, haga clic en Cuadro de herramientas y, a continuación, agregue un botón a Formulario1.
-
Para mostrar la ventana de código del formulario, haga doble clic en Button1.
-
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.ClickEnd Sub
con:
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 = NothingEnd Sub
-
Agregue la línea siguiente al principio del módulo de código form1:
Option Strict Off
-
Presione F5 para crear y ejecutar el programa.
-
Para generar el error, haga clic en Botón1. El error se produce en la línea que lee:
oDoc = oApp.Workbooks.Add
Referencias
Para obtener más información sobre 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 Automatizar Microsoft Excel desde Visual Basic .NET
302084 Automatizar Microsoft Excel desde Microsoft Visual C# .NET