Cómo usar ADOX con datos de Excel desde Visual Basic o desde VBA

Seleccione idioma Seleccione idioma
Id. de artículo: 303814 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

ActiveX Data Objects Extensions para lenguaje de definición de datos y seguridad (ADOX) ofrece a los desarrolladores de ActiveX Data Objects (ADO) las capacidades que están presentes en datos Access Objects (DAO) para manipular las bases de datos, tablas, campos y otros objetos de base de datos mediante programación. Desde el lanzamiento de proveedor Microsoft OLE DB para Jet versión 4.0, que admite los controladores ISAM que el motor de Jet se utiliza con bases de datos escritorio distinto de Microsoft Access, los programadores de ADO han sido capaces utilizar ADO y ADOX con libros y hojas de cálculo.

Sin embargo, puesto que una hoja de cálculo de Excel no es una base de datos normal, ADO tiene algunas limitaciones cuando se utiliza con Excel. en concreto, muchos métodos ADOX no funcionan o dar resultados inesperados cuando se utilizan con Excel. Este artículo documentan muchas de las limitaciones de ADOX y Excel. Para obtener información adicional acerca del uso de ADO con Excel, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
257819Cómo usar ADO con datos de Excel desde Visual Basic o desde VBA
Este artículo está dividido en las secciones siguientes:

Nota : las pruebas para este artículo se realizó en Service Pack 2 (SP2) de Microsoft Windows 2000 con Microsoft Data Access Components (MDAC) 2.6 Service Pack 1, Service Pack 5 de Microsoft Visual Basic 6 y Excel 2002 (XP). En este artículo no puede confirmar o describa las diferencias de comportamiento que los usuarios pueden observar con distintas versiones de Windows, MDAC, Visual Basic o Excel.

Más información

Catálogos ADOX

En el modelo de objeto ADOX, catálogo objeto representa una base de datos o, en el caso de Excel, un libro.
  • Puede utilizar una cadena de conexión o el objeto Connection de ADO para crear o abrir un objeto de catálogo . En el siguiente ejemplo de código ilustra cómo abrir Book1.xls como un catálogo ADOX:
    Dim cat As ADOX.Catalog
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & App.Path & "\book1.xls;Extended Properties=Excel 8.0"
    					
  • El objeto de catálogo tiene un método Create pero no tiene un método Delete .

Crear un catálogo

No puede utilizar el método Create del objeto ADOX catálogo para crear un nuevo libro de Excel. Si lo intenta, recibirá el siguiente mensaje de error:
Operación no se admite para este tipo de objeto.
Sin embargo, puede crear un libro de Excel nuevo especificando un nombre de libro nuevo para el catálogo y anexando al menos una tabla en el catálogo nuevo, utilizando las técnicas explicadas a continuación. Este método creará un libro nuevo con sólo las hojas que ha creado como tablas ADOX; en otras palabras, no se agregará el número de hojas en blanco especificado para un nuevo libro de Excel mediante el cuadro de diálogo Opciones de Excel predeterminado.

Tablas ADOX

El objeto ADOX tabla corresponde a cualquiera de los objetos de Excel (es decir, una hoja de cálculo o un rango) que pueden servir como un contenedor de datos.

Crear una tabla

Puede utilizar ADOX para crear nuevas tablas en Excel. Puesto que no se puede crear una tabla sin también crear columnas de, el ejemplo de código aparece en la sección de "ADOX Columns".
  • Crear una nueva tabla ADOX crea una nueva hoja de cálculo y un nuevo rango con nombre en la nueva hoja de cálculo con el nombre especificado. El nuevo rango abarca los encabezados de columna. Por ejemplo, si crea una tabla (hoja de cálculo) llamada MyTable con dos columnas, un rango con nombre MyTable, que se define como MyTable! $ A $ 1: $ B $ 1, también se crea.
  • Puede especificar un nombre de tabla que incluye un espacio; sin embargo, ADOX sustituye el espacio de subrayado en los nombres de hoja de cálculo y el intervalo que cree.
  • Se crea la nueva hoja de cálculo como la última hoja del libro, siguiendo el número predeterminado de hojas vacías que se especifican en Opciones de Excel para un nuevo libro.
  • Si intenta crear una nueva tabla cuando el libro está abierto en Excel, recibirá el siguiente mensaje de error:
    Error no especificado.
  • Si intenta crear una tabla que no tiene columnas definidos, aparece correctamente, pero de hecho nada se crea.
  • Si intenta cambiar el nombre de una tabla existente, recibirá el siguiente mensaje de error:
    Operación no se admite para este tipo de objeto.

Eliminar una tabla

No puede usar ADOX para eliminar una tabla (hoja de cálculo) o un rango en Excel, con nombre si lo creó ADOX o no.
  • Si intenta eliminar la hoja de cálculo (MyTable $), aparece correctamente sin error, pero permanece la hoja de cálculo del libro. Se puede llamar al método Delete repetidamente sin errores, pero no tiene ningún efecto.
  • Si intenta eliminar el rango (mitabla), aparece correctamente sin error, pero permanece el intervalo en el libro. Sin embargo, si intenta eliminar el rango una segunda vez, recibirá el error 3265:
    Elemento no se encuentra en la colección correspondiente al nombre solicitado u ordinal.
  • Si intenta eliminar un rango con nombre, deja intactos la definición de rango con nombre, pero se eliminan los datos en el intervalo.

Columnas ADOX

ADOX columnas corresponden a las columnas o campos de una base de datos y perfectamente corresponden a las columnas de una hoja de cálculo de Excel.

Tipos de datos de ADO se utiliza con Excel

ADO reconoce seis tipos de datos en un origen de datos Excel que puede utilizar para crear columnas:

  • adDouble, escriba 5
  • adDate, escriba 7
  • adCurrency, escriba 6
  • adBoolean, escriba 11
  • adVarWChar, escriba 202
  • adLongVarWChar ("Nota"), escriba 203

Columnas en general

  • Mientras la tabla no contiene las filas de datos se pueden anexar columnas adicionales a una tabla creada anteriormente.
  • Puede especificar nombres de columna que incluyen espacios.
  • ADOX siempre crea encabezados de columna que estén precedidos por una comilla ('), por ejemplo, 'a1', Col1, ' Col2. Sin embargo, esto no aparece provocar un problema más adelante porque es recuperar el nombre sin las comillas.

Creación de columnas al crear una tabla

Crear columnas funciona mejor cuando se realiza al mismo tiempo que se crea una nueva tabla con ADOX.

El código siguiente crea una nueva tabla (hoja de cálculo) que contiene dos columnas (uno numérico y un texto):
    Dim cat As ADOX.Catalog
    Dim tbl As ADOX.Table
    Dim col As ADOX.Column
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
	"Data Source=" & App.Path & "\book1.xls;Extended Properties=Excel 8.0"
    Set tbl = New ADOX.Table
    tbl.Name = "TestTable"
    Set col = New ADOX.Column
    With col
        .Name = "Col1"
        .Type = adDouble
    End With
    tbl.Columns.Append col
    Set col = Nothing
    Set col = New ADOX.Column
    With col
        .Name = "Col2"
        .Type = adVarWChar
    End With
    tbl.Columns.Append col
    cat.Tables.Append tbl
				

Crear columnas en una hoja de cálculo existente

Anexar columnas a una ya existente, hoja de cálculo vacía genera resultados inesperados. Cuando se anexe la primera columna ADOX a colección Columns de la tabla, ADOX primero crea un encabezado de columna denominado F1 en la columna A de la hoja de cálculo y, a continuación, crea el nuevo encabezado de columna ADOX en la columna B de la hoja de cálculo. Por lo tanto, código ADOX que agrega dos nuevas columnas se produce en tres encabezados de columna. Si intenta eliminar esta no deseado, primera columna de la colección Columns antes de agregar la primera columna ADOX, parece que se realice correctamente, pero la columna no deseada se crea sin embargo.

Eliminar columnas

No se puede eliminar una columna de una tabla ADOX en Excel.
  • Si la columna no tiene datos, esto aparece correctamente sin error, pero la columna y encabezado de columna permanecen.
  • Si la columna contiene datos, la operación de eliminación se produce el mensaje de error siguiente:
    Operación no válida.

Cambiar el tipo de datos de una columna existente

Después de una columna se ha anexado a una tabla, si se intenta establecer su propiedad Type en un tipo de datos diferente, recibirá el siguiente mensaje de error:
Operación no permitida en este contexto.

Agregar datos a Excel tablas y columnas

Cuando está probando código de ADO con Excel en el entorno de diseño de Visual Basic, la primera vez que ejecuta una operación de conjunto de registros, puede recibir el siguiente mensaje de error:
Secuencia de ordenación seleccionada no admitida por el sistema operativo.
Puede omitir este mensaje de error; este error no se produce una vez que se compila la aplicación. Para obtener información adicional, haga clic en el número de artículo siguiente para ver el artículo en Microsoft Knowledge Base:
246167PRB: Secuencia de ordenación error abrir un conjunto de registros la primera vez en una hoja de CÁLCULO de Excel ADODB

Agregar datos a columnas de Excel que se crean mediante ADOX

Cuando utiliza ADO para insertar o modificar datos en las tablas y columnas que haya creado en Excel con ADOX, ADO respeta los tipos de datos que especificó para esas columnas, aunque no borrar donde esta información se almacena.
  • Todos los valores de cadena de texto se almacenan precedido por una comilla. Sin embargo, esto no aparece provocar un problema más adelante porque es recuperar el valor sin las comillas.
  • Si intenta insertar una cadena de texto en una columna que está definida como numérico o un número en una columna de texto, recibirá el error 80040e21:
    La operación de varios pasos generó errores. Comprobar cada valor de estado.

Agregar datos a columnas de Excel ordinarias

Cuando utiliza ADO para insertar o modificar datos en hojas de cálculo de Excel o rangos que no se crearon o modificaron con ADOX, restricciones no se exigen en el tipo de datos que se pueden insertar.
  • Las cadenas de texto se almacenan sin la comilla de cierre anterior.
  • Los números aparecen alineados a la izquierda. En Excel 2002, los números marcados con la etiqueta inteligente que advierte a "Números almacenados como texto". Esto puede causar un problema más adelante cuando se trabaja con los datos, especialmente si se ha almacenado los datos en Excel para análisis numéricos.

Mediante SQL CREATE, ALTER y DROP instrucciones

Puede ejecutar instrucciones de lenguaje de definición de datos (DDL) de Microsoft SQL como, por ejemplo, CREATE, ALTER y DROP en objetos de base de datos de Excel a través de una conexión de ADO para producir los mismos resultados que los métodos ADOX correspondientes descritos anteriormente.

Conclusión

  • ADOX funciona mejor con Excel cuando una nueva tabla y todas sus columnas se crean al mismo tiempo.
  • ADO funciona mejor con datos de Excel cuando los datos se almacenan en una hoja de cálculo que se ha creado con ADOX.

Propiedades

Id. de artículo: 303814 - Última revisión: martes, 13 de julio de 2004 - Versión: 2.2
La información de este artículo se refiere a:
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Palabras clave: 
kbmt kbdatabase kbhowto kbiisam KB303814 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 303814

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