Cómo vincular a una base de Access datos procedentes de otros orígenes de datos
Por Enrique Martínez Montejo
Última revisión: 13/01/2005
 

Mediante los correspondietes controladores ISAM instalables, podemos vincular en nuestra base de datos de Access, datos procedentes de otros orígenes de datos, como bien podría ser archivos de dBASE, Excel, Paradox, Lotus 123, así como archivos de texto delimitado y tablas de documentos HTML.

1. Vincular un archivo de dBASE

Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table

' Abro el catálogo
Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=C:\Mis documentos\Bd1.mdb"
' Creo la nueva tabla
Set tbl = New ADOX.Table
With tbl
    .Name = "Tabla Vinculada de dBASE"
    Set .ParentCatalog = cat
End With

' Establezco las propiedades para crear el vínculo con el archivo de dBASE
With tbl
    .Properties("Jet OLEDB:Link Datasource") = "C:\Mis documentos\"    ' Indicamos solamente la carpeta
    .Properties("Jet OLEDB:Remote Table Name") = "Archivo#dbf"
    .Properties("Jet OLEDB:Create Link") = True
    .Properties("Jet OLEDB:Link Provider String") = "dBASE 5.0;"          
End With

' Añado la tabla a la colección Tables
cat.Tables.Append tbl

Set cat = Nothing

MsgBox "Se ha vinculado correctamente el archivo."

En la propiedad Jet OLEDB:Link Provider String se indica el tipo de ISAM de dBASE que se utilizará, y que se corresponderá con la versión del archivo DBF, por lo que también se permite especificar los valores dBASE III; y dBASE IV;.

2. Vincular una hoja de cálculo de Excel

Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table

' Abro el catálogo
Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=C:\Mis documentos\Bd1.mdb"
' Creo la nueva tabla
Set tbl = New ADOX.Table
With tbl
    .Name = "Tabla Vinculada de Excel"
    Set .ParentCatalog = cat
End With

' Establezco las propiedades para crear el vínculo con el archivo de Excel
'

With tbl
    .Properties("Jet OLEDB:Link Datasource") = "C:\Mis documentos\Libro1.xls"
    .Properties("Jet OLEDB:Remote Table Name") = "Hoja1$"
    .Properties("Jet OLEDB:Create Link") = True
    .Properties("Jet OLEDB:Link Provider String") = "Excel 8.0;HDR=Yes"
End With

' Añado la tabla a la colección Tables
cat.Tables.Append tbl

Set cat = Nothing

MsgBox "Se ha vinculado correctamente la hoja de cálculo."

Advierta que al nombre de la hoja hay que añadir el signo $ en el valor de la propiedad Jet OLEDB:Remote Table Name. En el supuesto de querer vincular un rango de celdas con nombre, deberá entonces especificar solamente el nombre del rango, sin el signo $.

Si desea conocer más a fondo el ISAM de Excel, consulte el siguiente artículo: Trabajar con ADO, DAO y Excel.

3. Vincular un archivo de texto delimitado

Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table

' Abro el catálogo
Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=C:\Mis documentos\Bd1.mdb"
' Creo la nueva tabla
Set tbl = New ADOX.Table
With tbl
    .Name = "Tabla Vinculada de Texto"
    Set .ParentCatalog = cat
End With

' Establezco las propiedades para crear el vínculo con el archivo de texto
'

With tbl
    .Properties("Jet OLEDB:Link Datasource") = "C:\Mis documentos\"    ' Indicamos solamente la carpeta
    .Properties("Jet OLEDB:Remote Table Name") = "Archivo#txt"
    .Properties("Jet OLEDB:Create Link") = True
    .Properties("Jet OLEDB:Link Provider String") = "TEXT;HDR=Yes"
End With

' Añado la tabla a la colección Tables
cat.Tables.Append tbl

Set cat = Nothing

MsgBox "Se ha vinculado correctamente el archivo de texto."

Dependiendo de los tipos de datos que tenga los campos del archivo de texto, y el formato del delimitador utilizado, puede que necesite crear un archivo de configuración de esquema, que necesariamente se tendrá que llamar Schema.ini, y deberá residir en la misma carpeta donde se encuentra el archivo de texto. Para saber los parámetros y valores que deberá de especificar en dicho archivo de configuración, consulte el siguiente artículo: Trabajar con los datos de un archivo de texto.

4. Vincular un archivo de Paradox

Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table

' Abro el catálogo
Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=C:\Mis documentos\Bd1.mdb"
' Creo la nueva tabla
Set tbl = New ADOX.Table
With tbl
    .Name = "Tabla Vinculada de Paradox"
    Set .ParentCatalog = cat
End With

' Establezco las propiedades para crear el vínculo con la el archivo de Paradox
'

With tbl
    .Properties("Jet OLEDB:Link Datasource") = "C:\Mis documentos\"     ' Indicamos solamente la carpeta
    .Properties("Jet OLEDB:Remote Table Name") = "Archivo#db"
    .Properties("Jet OLEDB:Create Link") = True
    .Properties("Jet OLEDB:Link Provider String") = "Paradox 5.x;"
End With

' Añado la tabla a la colección Tables
cat.Tables.Append tbl

Set cat = Nothing

MsgBox "Se ha vinculado correctamente el archivo de Paradox."

En la propiedad Jet OLEDB:Link Provider String se indica el tipo de ISAM de Paradox que se utilizará, y que se corresponderá con la versión del archivo de Paradox, por lo que también se permite especificar los valores  Paradox 3.x; y Paradox 4.x;.

5. Vincular una hoja de cálculo de Lotus 1-2-3

Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table

' Abro el catálogo
Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=C:\Mis documentos\Bd1.mdb"
' Creo la nueva tabla
Set tbl = New ADOX.Table
With tbl
    .Name = "Tabla Vinculada de Lotus"
    Set .ParentCatalog = cat
End With

' Establezco las propiedades para crear el vínculo con el archivo de Lotus
'

With tbl
    .Properties("Jet OLEDB:Link Datasource") = "C:\Mis documentos\Libro1.wk4"
    .Properties("Jet OLEDB:Remote Table Name") = "Hoja1:"
    .Properties("Jet OLEDB:Create Link") = True
    .Properties("Jet OLEDB:Link Provider String") = "Lotus wk4;HDR=Yes"
End With

' Añado la tabla a la colección Tables
cat.Tables.Append tbl

Set cat = Nothing

MsgBox "Se ha vinculado correctamente la hoja de cálculo."

El controlador ISAM Lotus de Microsoft Jet, solamente es compatible con las siguientes versiones de hojas de cálculo de Lotus 1-2-3: Lotus WKS, Lotus WK1, Lotus WK3 y Lotus WK4.

Cuando se vincula una hoja de cálculo de Lotus a través de su ISAM correspondiente, tendremos distintos grados de acceso a los datos dependiendo de la versión que tenga el archivo de Lotus:

Asimismo, y dependiendo también de la versión del archivo de Lotus, deberemos utilizar una sintaxis diferente en el valor de la propiedad Jet OLEDB:Remote Table Name:

Objeto Versión de Lotus Sintaxis Ejemplo
Hoja completa de archivo de hoja única WKS y WK1 nombre-archivo#wks
nombre-archivo#wk1
clientes#wks
clientes#wk1
Hoja completa de archivo de hojas múltiples WK3 y WK4 nombre-hoja: provincias:
Rango de celdas con nombre WKS, WK1, WK3 y WK4 nombre-rango provincias
Rango de celdas sin nombre WKS y WK1 A1..Z25 B3..D128
Rango de celdas sin nombre WK3 y WK4 nombre-hoja:A1..Z25 hoja1:B3.D128

Por último, indicar que deberá de especificar el tipo de ISAM de Lotus que corresponda con el archivo de Lotus 1-2-3 cuyos datos desee vincular a la base de datos de Access:

6. Vincular una tabla existente en un archivo HTML

Antes de intentar abrir una tabla HTML, deberá conocer las convenciones de nombres de tablas que puede utilizar para referenciar a una tabla dentro de un documento HTML:

El siguiente ejemplo vinculará a nuestra base de datos, una tabla existente en un documento HTML con el título de Clientes:

Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table

' Abro el catálogo
Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=C:\Mis documentos\Bd1.mdb"
' Creo la nueva tabla
Set tbl = New ADOX.Table
With tbl
    .Name = "Tabla Vinculada de HTML"
    Set .ParentCatalog = cat
End With

' Establezco las propiedades para crear el vínculo con el documento HTML
'

With tbl
    .Properties("Jet OLEDB:Link Datasource") = "C:\Mis documentos\Archivo.htm"
    .Properties("Jet OLEDB:Remote Table Name") = "Clientes"
    .Properties("Jet OLEDB:Create Link") = True
    .Properties("Jet OLEDB:Link Provider String") = "HTML Import;HDR=Yes"
End With

' Añado la tabla a la colección Tables
cat.Tables.Append tbl

Set cat = Nothing

MsgBox "Se ha vinculado correctamente la tabla HTML."

Conviene indicar que el ISAM de HTML funciona de forma similar al ISAM de texto del motor Jet, por lo que deberá de tener instalado el archivo MSTEXT40.DLL (si utiliza la versión 4.0 del motor Jet).

Para conocer la forma de trabajar del ISAM de texto del motor Microsoft Jet, conviene que consulte el siguiente artículo técnico: Trabajar con los datos de un archivo de texto. Recomiendo su lectura, sobretodo el apartado que describe el archivo de configuración de esquema Schema.ini, porque puede ser que necesite crear uno cuando desee trabajar con el ISAM de HTML, sobretodo si queremos tener un control absoluto sobre el tipo de dato que contienen los campos de la tabla.

 

Otros enlaces de interés:

Cómo vincular una tabla de una base de datos Access

Cómo vincular a una base de Access una tabla de una base de datos SQL Server

Cómo vincular una tabla de Access a una base de datos de SQL Server

Colección de ejemplos de la biblioteca de ADOX


Enrique Martínez Montejo - 2005

NOTA: La información contenida en este artículo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en el presente artículo.

NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.