En esta guía paso a paso se describe cómo importar
datos en Microsoft Excel desde Pubs, una base de datos de ejemplo
que se incluye con Microsoft SQL Server.
ActiveX Data
Objects (ADO) proporciona acceso a cualquier tipo de origen de
datos. Se trata de un modelo de objetos sin estructura con pocos
objetos. Los objetos principales del modelo de objetos de ADO son:
Objeto Descripción
---------------------------------------------------------------------------
Conexión Hace referencia a la conexión con el origen de datos.
Conjunto de registros Hace referencia a los datos extraídos.
Comando Hace referencia a un procedimiento almacenado o a
instrucciones SQL que se van a ejecutar.
Aunque
hay muchas formas de devolver un conjunto de registros con ADO, este
artículo se centra en los objetos Conexión y Conjunto de registros.
Volver
al principio
Requisitos
Debe disponer de un servidor local que ejecute Microsoft SQL Server
y que contenga la base de datos Pubs.
Microsoft recomienda
que se tengan conocimientos acerca de:
• |
Creación de procedimientos de Visual Basic para
Aplicaciones en los programas de Office. |
• |
Trabajo con variables de objeto. |
• |
Trabajo con objetos de Excel. |
• |
Conceptos de sistemas de administración de
bases de datos relacionales (RDBMS). |
• |
Instrucciones SELECT del Lenguaje de consulta
estructurado (SQL). |
Volver
al principio
Hacer referencia a la
Biblioteca de objetos ADO
1. |
Inicie Excel. Abra un libro nuevo y guárdelo
como SQLExtract.xls. |
2. |
Inicie el Editor de Visual Basic y seleccione
su proyecto de VBA. |
3. |
En el menú Herramientas, haga clic en
Referencias. |
4. |
Active la casilla de verificación de la versión
más reciente de Biblioteca de objetos de datos de Microsoft
ActiveX. |
Volver
al principio
Crear la conexión
1. |
Inserte un módulo nuevo en el proyecto. |
2. |
Cree un subprocedimiento llamado DataExtract.
|
3. |
Escriba o pegue el siguiente código: ' Create a connection object.
Dim cnPubs As ADODB.Connection
Set cnPubs = New ADODB.Connection
' Provide the connection string.
Dim strConn As String
'Use the SQL Server OLE DB Provider.
strConn = "PROVIDER=SQLOLEDB;"
'Connect to the Pubs database on the local server.
strConn = strConn & "DATA SOURCE=(local);INITIAL CATALOG=pubs;"
'Use an integrated login.
strConn = strConn & " INTEGRATED SECURITY=sspi;"
'Now open the connection.
cnPubs.Open strConn
|
Volver
al principio
Extraer los datos
Escriba o pegue el siguiente código para extraer los registros:
' Create a recordset object.
Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset
With rsPubs
' Assign the Connection object.
.ActiveConnection = cnPubs
' Extract the required records.
.Open "SELECT * FROM Authors"
' Copy the records into cell A1 on Sheet1.
Sheet1.Range("A1").CopyFromRecordset rsPubs
' Tidy up
.Close
End With
cnPubs.Close
Set rsPubs = Nothing
Set cnPubs = Nothing
Volver
al principio
Comprobar que funciona
1. |
Ejecute el código. |
2. |
Cambie a Excel y examine la hoja 1 del libro
para ver los datos. |
Volver
al principio
Solucionar problemas
Si el código parece que se bloquea y aparece un error de tiempo de
ejecución, puede que el servidor de base de datos esté inactivo.
Puede utilizar la propiedad ConnectionTimeout para controlar el
tiempo que se tarda en devolver un error de tiempo de ejecución.
Establezca esta propiedad a un valor mayor que cero. Si establece el
valor a cero, nunca se agotará el tiempo de espera de la conexión.
El valor predeterminado es 15 segundos.
Volver
al principio
Puede encontrar código adicional de ejemplo si
consulta el siguiente sitio Web de Microsoft:
Volver
al principio