ExcelADO muestra cómo usar ADO para leer y escribir datos en libros de Excel

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

Resumen

El ejemplo de ExcelADO.exe ilustra cómo puede utilizar Objetos de datos ActiveX (ADO, ActiveX Data Objects) con el Proveedor OLE DB 4.0 de Microsoft Jet para leer y escribir datos en los libros de Microsoft Excel.

Más información

El siguiente archivo se puede descargar desde el Centro de descarga de Microsoft:
ExcelADO.exe
Fecha de publicación: 12 de diciembre de 2000

Para obtener información adicional acerca de cómo descargar los archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
119591 Cómo obtener archivos de soporte técnico de Microsoft desde los Servicios en línea
Microsoft exploró este archivo en busca de virus con el software de detección de virus más reciente disponible en la fecha de publicación. Asimismo, el archivo se almacenó en servidores seguros que ayudan a impedir la realización de cambios no autorizados.

¿Por qué usar ADO?

El uso de ADO para transferir o recuperar datos en un libro de Excel le proporciona, como desarrollador, varias ventajas sobre la automatización de Excel:
  • Rendimiento. Microsoft Excel es un servidor ActiveX fuera de proceso. ADO se ejecuta en proceso y evita la sobrecarga que suponen las costosas llamadas fuera de proceso.
  • Escalabilidad. En las aplicaciones Web no siempre es deseable automatizar Microsoft Excel. ADO le presenta una solución más escalable para tratar los datos de un libro.
ADO se puede utilizar estrictamente para transferir los datos sin procesar a un libro. No puede usar ADO para aplicar formatos o fórmulas a las celdas. Sin embargo, puede transferir los datos a un libro al que se haya dado un formato anteriormente y mantener dicho formato. Si requiere el formato "condicional" una vez insertados los datos, puede lograr este formato con automatización o con una macro en el libro.

Características del Proveedor OLE DB de Jet para los libros de Excel

El motor de base de datos Microsoft Jet se puede utilizar para tener acceso a los datos en otros formatos del archivo de base de datos, como los libros de Excel, a través de controladores del método de acceso secuencial indizado (ISAM, Indexed Sequential Access Method). Para abrir formatos externos admitidos por el Proveedor OLE DB de Microsoft Jet 4.0, hay que especificar el tipo de base de datos en las propiedades extendidas de la conexión. El Proveedor OLE DB de Jet admite los tipos de base de datos siguientes para los libros de Microsoft Excel:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
NOTA
Utilice el tipo de base de datos de origen de Excel 5.0 para los libros de Microsoft Excel 5.0 y 7.0 (95), y el tipo de base de datos de origen de Excel 8.0 para los libros de Microsoft Excel 8.0 (97) y 9.0 (2000). El ejemplo de ExcelADO.exe utiliza los libros de Excel en el formato de Excel 97 y Excel 2000.

Los ejemplos siguientes muestran una conexión ADO a un libro de Excel 97 (o 2000):
Dim oConn As New ADODB.Connection With oConn .Provider = "Microsoft.Jet.OLEDB.4.0" .Properties("Propiedades extendidas").Value = "Excel 8.0" .Open "C:\Book1.xls" '.... .Close End With
				
     O bien
Dim oConn As New ADODB.Connection oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\Book1.xls;" & _ "Propiedades extendidas=""Excel 8.0;""" oConn.Close
				
Convenciones de nomenclatura de la tabla

Hay varias maneras en que puede hacer referencia a una tabla (o rango) en un libro de Excel:
  • Utilice el nombre de la hoja seguido de un signo de dólar (por ejemplo, [Hoja1$] o [Mi hoja de cálculo$]). Una tabla de libro a la que se hace referencia de esta manera está compuesta del rango completo que se use en la hoja de cálculo.
    oRS.Open "Select * from [Hoja1$]", oConn, adOpenStatic
    					
  • Utilice un rango con un nombre definido (por ejemplo, [Tabla1]).
    oRS.Open "Select * from Tabla1", oConn, adOpenStatic
    					
  • Utilice un rango con una dirección específica (por ejemplo, [Hoja1$A1:B10]).
    oRS.Open "Select * from [Hoja1$A1:B10]", oConn, adOpenStatic
    					
Encabezados de tabla

Con los libros de Excel, de forma predeterminada, se considera que la primera fila de un rango es la fila del encabezado (o los nombres de campo). Si el primer rango no contiene encabezados, puede especificar HDR=NO en las propiedades extendidas, en la cadena de conexión. Si la primera fila no contiene encabezados, el proveedor OLE DB denomina automáticamente a los campos en su lugar (donde F1 representaría el primer campo, F2 representaría el segundo campo, etcétera).

Tipos de datos:

A diferencia de una base de datos tradicional, no hay ninguna manera directa de especificar los tipos de datos para las columnas de las tablas de Excel. En su lugar, el proveedor OLE DB examina un número limitado de filas en una columna para "adivinar" el tipo de datos del campo. El número de filas que se examina es, de forma predeterminada, ocho (8); puede cambiar el número de filas especificando un valor entre uno (1) y dieciséis (16) en MAXSCANROWS, en las propiedades extendidas de la cadena de conexión.

Archivos incluidos con el ejemplo

El archivo ExcelADO.exe contiene un proyecto EXE estándar de Visual Basic, Páginas Active Server (ASP) y libros de Excel 97 y de Excel 2000 que actúan como plantillas, y una base de datos de Microsoft Access 2000. Los archivos incluidos son los siguientes:

Archivos de proyecto EXE estándar de Visual Basic
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Páginas Active Server
  • EmpData.asp
  • Orders.asp
Libros de Microsoft Excel
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Base de datos de Microsoft Access
  • Data.mdb

Cómo utilizar el ejemplo

Extraiga el contenido del archivo .exe en una carpeta.

Para utilizar el proyecto de Visual Basic:
  1. En Visual Basic, abra el archivo ExcelADO.vbp.
  2. En el menú Proyecto, seleccione Referencias y, a continuación, establezca las referencias a Microsoft ADO Ext. for DDL and Security y Biblioteca de Objetos de datos ActiveX de Microsoft. Este código de ejemplo funciona con ADO 2.5 y ADO 2.6, así que seleccione la versión adecuada para el equipo.
  3. Presione la tecla F5 para ejecutar el programa. Aparece un formulario para la demostración.
  4. Haga clic en Sample 1. Este ejemplo crea una copia de OrdersTemplate.xls. Después utiliza ADO para conectar con el libro y abre un conjunto de registros en una tabla que es un rango definido en el libro. El nombre del rango es Orders_Table. Utiliza los métodos AddNew y Update de ADO para agregar los registros (o filas) al rango definido en el libro. Cuando se completa la adición de las filas, la conexión de ADO se cierra y el libro se muestra en Microsoft Excel. Siga estos pasos para hacer esto:
    1. En el menú Insertar de Excel, seleccione Nombres y, a continuación, seleccione Definir.
    2. En la lista de nombres definidos, seleccione Orders_Table. Observe que el nombre definido ha aumentado para incluir los registros agregados recientemente. El nombre definido se utiliza junto con la función OFFSET de Excel para calcular el total en los datos agregados a la hoja de cálculo.
    3. Cierre Microsoft Excel y vuelva a la aplicación de Visual Basic.
  5. Haga clic en Sample 2. Este ejemplo crea una copia de EmpDataTemplate.xls. Utiliza ADO para conectar con el libro y utiliza el método Execute de la conexión ADO para insertar los datos (INSERT INTO en SQL) en el libro. Los datos se agregan en los rangos definidos (o tablas) del libro. Cuando se transfieren los datos, se cierra la conexión y el libro que resulta se muestra en Excel. Después de examinar el libro, cierre Microsoft Excel y, a continuación, vuelva a la aplicación de Visual Basic.

  6. Haga clic en Sample 3. Este ejemplo crea una copia de ProductsTemplate.xls. Utiliza la biblioteca de objetos Microsoft ADO Extensions 2.1 for DDL and Security (ADOX) para agregar una nueva tabla (o una nueva hoja de cálculo) al libro. Un Recordset de ADO se obtiene a continuación para la nueva tabla y los datos se agregan con los métodos AddNew y Update. Cuando se complete la adición de las filas, la conexión de ADO se cierra y el libro se muestra en Excel. El libro contiene código de macro de Visual Basic para Aplicaciones (VBA) en el evento Open para el libro. La macro se ejecuta cuando el libro se abre; si la nueva hoja de cálculo "Products" existe en el libro, el código de la macro da formato a la hoja de cálculo y, a continuación, el código de la macro se elimina. Esta técnica presenta una manera para que el desarrollador Web pase el código de formato fuera del servidor Web al cliente. Una aplicación Web podría transmitir al cliente un libro con formato que contuviera datos y permitir que el código de la macro realizara algún formato "condicional" que podría no ser posible que se ejecutara en el cliente solo en una plantilla.

    NOTA
    Para examinar el código de la macro, vea el módulo ThisWorkbook en el proyecto VBA para ProductsTemplate.xls.

  7. Haga clic en Sample 4. Este ejemplo genera los mismos resultados que Sample 1, pero la técnica que se utiliza para transferir los datos es ligeramente diferente. En Sample 1, los registros (o filas) se agregan de uno en uno a la hoja de cálculo. En Sample 4 se agregan los registros de forma masiva asociando la tabla Excel a una base de datos de Access y ejecutando una consulta de datos anexados (o INSERT INTO..SELECT FROM) para anexar los registros de la tabla de Access a la tabla de Excel. Cuando la transferencia ha finalizado, la tabla de Excel se separa de la base de datos de Access y el libro que resulta se muestra en Excel. Cierre Excel y vuelva a la aplicación de Visual Basic.

  8. El último ejemplo muestra cómo puede leer los datos de un libro de Excel. Seleccione una tabla en la lista desplegable y, a continuación, haga clic en Sample 5. La ventana Inmediata muestra el contenido de la tabla que seleccionó. Si selecciona una hoja de cálculo completa ("Hoja1$" u "Hoja2$") para la tabla, la ventana Inmediata muestra el contenido del rango utilizado para esa hoja de cálculo. Observe que el rango utilizado no comienza necesariamente en la fila 1 y la columna 1 de la hoja de cálculo. El rango utilizado comienza en la celda situada en la parte superior izquierda de la hoja de cálculo que contiene los datos.

    Si selecciona una dirección de un rango concreto o un rango definido, la ventana Inmediata muestra el contenido sólo de ese rango en la hoja de cálculo.
Para utilizar la Página Active Server (ASP):
  1. Cree una nueva carpeta denominada ExcelADO en el directorio principal del servidor Web. Observe que la ruta de acceso predeterminada del directorio principal es C:\InetPut\WWWRoot.
  2. Copie los archivos siguientes en la carpeta que creó en el paso anterior:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. Las secuencias de comandos (scripts) ASP de este ejemplo crean copias de las plantillas de libro con el método Copy de FileSystemObject. Para que el método Copy tenga éxito, el cliente que está teniendo acceso a la secuencia de comandos debe tener acceso de escritura en la carpeta que contiene la ASP.
  4. Vaya hasta Orders.asp (es decir, http://SuServidor/ExcelADO/Orders.ASP) y observe que el explorador muestra un libro de Excel similar al Sample 1 de la aplicación de Visual Basic.
  5. Vaya hasta EmpData.asp (es decir, http://SuServidor/ExcelADO/EmpData.ASP) y observe que el explorador muestra un libro de Excel similar al Sample 2 de la aplicación de Visual Basic.
(c) Microsoft Corporation 2000, Reservados todos los derechos. Con la colaboración de Lori B. Turner, Microsoft Corporation.

Referencias

Para obtener información adicional al respecto, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
195951 CÓMO: Utilizar ADO desde ASP para realizar consultas y actualizaciones en Excel
194124 PRB: Los valores de Excel se devuelven como NULL cuando se utiliza OpenRecordset de DAO
193998 CÓMO: Leer y mostrar datos binarios en ASP
247412 INFO: Métodos para transferir datos a Excel desde Visual Basic
257819 CÓMO: Usar ADO con datos de Excel desde Visual Basic o desde VBA

Propiedades

Id. de artículo: 278973 - Última revisión: jueves, 02 de noviembre de 2006 - Versión: 6.0
La información de este artículo se refiere a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Edición empresarial
  • Microsoft Active Server Pages 4.0
Palabras clave: 
kbdownload kbdownload kbautomation kbfile kbprogramming KB278973

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