Translate

viernes, 28 de marzo de 2014

Integración de Excel Access y Access a Excel

Integración Excel a Access 


Es difícil pensar en capturar manualmente todos los registros de una tabla. Es por eso que Access nos permite importar datos de Excel de una manera sencilla. A continuación describiré este proceso de importación de datos.


Dos opciones para importar datos



Lo primero que debemos decidir antes de iniciar con la importación de datos a Access es decidir si haremos la importación hacia una nueva tabla o hacia una tabla ya existente de Access. En caso de que la importación se realice a una nueva tabla, Access intentará asignar el tipo de datos adecuado para cada campo pero será necesario realizar una revisión posterior para asegurarnos de que Access haya asignado los tipos de datos adecuados en cada campo.

La otra opción es crear una tabla anticipadamente de manera que la importación se haga directamente a ella. De esta manera podremos definir los campos apropiados y el tipo de dato adecuado para recibir la información proveniente de Excel.
De manera personal prefiero utilizar el primer método y dejar que Access cree una nueva tabla y posteriormente realizar las adecuaciones pertinentes, pero puedes elegir cualquiera de estos dos métodos. En este artículo seguiremos la opción de crear una nueva tabla.


Importar una hoja de Excel


El proceso de importación de datos en Access se realiza a través de un Asistente el cual nos llevará de la mano para importar los datos. Debes ir a la ficha Datos externos y pulsar el comando Excel.









Este botón mostrará la primera pantalla del Asistente la cual nos permitirá especificar el archivo de Excel que contiene la información. Solamente debemos pulsar el botón Examinar para localizar el libro de Excel adecuado.


Adicionalmente debemos especificar el lugar donde se almacenarán los datos. La primera opción creará una nueva tabla que contendrá los datos importados. Si por el contrario deseas importar los datos a una tabla ya existente debes elegir la segunda opción la cual mostrará una lista de las tablas existentes de manera que puedas elegir.
Elegiré la opción de crear una nieva tabla y pulsaré el botón Aceptar para avanzar al segundo paso del Asistente.

Elegir la hoja de Excel a importar


El Asistente de importación detectará las hojas existentes dentro del libro de Excel.


Solamente debemos asegurarnos de elegir la hoja adecuada antes de avanzar. Adicional-mente podrás observar una muestra de los datos contenidos en la hoja seleccionada.  Cuando estés listo pulsa el botón Siguiente.

Encabezados de columna


El tercer paso es muy simple ya que solamente nos pregunta si los datos de la hoja de Excel tienen un encabezado de columna.


En caso de que así sea solamente marca la caja de selección que indica que la Primera fila contiene encabezados de columna. Pulsa el botón Siguiente para continuar con el Asistente de importación.

Detalle de cada campo


El siguiente paso nos dará la posibilidad de indicar el tipo de dato que contienen las columnas de nuestro archivo Excel.


Si haces clic sobre cada columna podrás especificar el tipo de dato adecuado dentro de la lista de opciones.
La opción Indexado nos permite indexar una columna.  Una columna indexada permite que la base de datos responda de una manera más rápida. Los índices son un tema avanzado que trataremos más adelante pero este paso del Asistente nos permite indicar si un campo será indexado o no al momento de importarlo.
La otra opción que tenemos en esta ventana es No importar el campo y en caso de seleccionarlo  se omitirá dicha columna de la importación. Una vez que hayas revisado los campos de la hoja debes pulsar el botón Siguiente.

Definir una clave principal



El siguiente paso del Asistente nos permite establecer una clave principal para la nueva tabla que será creada en la importación de datos. La primera opción sugiere Permitir a Access agregar la clave principal lo cual se traduce en una nueva columna que contendrá un identificador único para cada registro de la tabla.


Si por el contrario, nuestra hoja de Excel ya contiene una clave principal definida, podemos seleccionar la opción Elegir clave principal para entonces seleccionar la columna que contiene dicha clave.
La última opción nos deja avanzar sin especificar una clave principal en la nueva tabla. Haz clic en Siguiente para ir al paso final.

Finalizar la importación de datos a Access


El último paso del Asistente nos permite asignar un nombre a la nueva tabla que se creará en Access.


Para terminar con el proceso debes especificar el nombre de la tabla y hacer clic en el botón Finalizar. Finalmente Access preguntará si deseas guardar los pasos de la importación que acabamos de realizar, lo cual es recomendable si repetirás continuamente la exportación.
Al cerrar el Asistente podrás ver la nueva tabla creada en Access con los datos importados desde Excel.


Integración Access a Excel

Muchas veces tenemos la necesidad de copiar datos de una tabla o consulta Access a una hoja Excel. Este paso es sencillo, simplemente copiar y pegar. Copiamos los datos en Access y los pegamos en Excel, pero si el tamaño/cantidad de datos es grande esta operación puede dejar literalmente “tostado” nuestro ordenador durante varios minutos. Los minutos en los que se queda “tostado” variaran dependiendo de la cantidad de datos y la memoria RAM que tenga nuestro ordenador.

Afortunadamente existe una mejor solución para copiar datos de una tabla o consulta Access a Excel, es un poco más compleja, pero no mucho más. Vamos a crear una Macro y usar la función de VBA “Cells.CopyFromRecordset” para copiar tablas y consultas de Access en segundos.

Pasos:

1) Abrir Excel

2) Abrir el editor de Macros (Pulsar ALT+F11)

3) Copiar y pegar la siguiente Macro:

==========================================
Public Sub Copiar_Tabla_Access()
  Dim oConexion As ADODB.Connection
  Dim rsTabla As ADODB.Recordset
  Dim sNombreTabla As String
  Dim sNombreAccess As String
  Dim i As Integer

  sNombreAccess = InputBox(“¿Ruta y nombre del fichero Access?”)
  If sNombreAccess <> “” Then
    sNombreTabla = InputBox(“¿nombre de la tabla/consulta?”)
    Set oConexion = New ADODB.Connection
    oConexion.CursorLocation = adUseClient
    oConexion.Open “PROVIDER=Microsoft.Jet.OLEDB.4.0;” & _
                                “Data Source=” & sNombreAccess & “;”
    Set rsTabla = New ADODB.Recordset
    rsTabla.Open “Select * From [" & sNombreTabla & "]“, _
                         oConexion, _
                         adOpenStatic
    ActiveSheet.Cells.CopyFromRecordset rsTabla
    ActiveSheet.Rows(“1:1″).Insert Shift:=xlDown
    For i = 0 To rsTabla.Fields.Count – 1
      ActiveSheet.Cells(1, i + 1).Value = rsTabla.Fields(i).Name
    Next
    rsTabla.Close
    oConexion.Close
    Set rsTabla = Nothing
    Set oConexion = Nothing
  End If
End Sub
‘==========================================

4) Guardamos los cambios.

5) Ahora ya podemos ejecutar la Macro para copiar los datos de una tabla o consulta Access en Excel. Abrimos la ventana de Macros en el Menú Herramientas > Macro > Macros 
(o pulsar ALT+F8).

6) Seleccionamos la Macro que hemos creado “Copiar_Tabla_Access” y pulsamos el botón “ejecutar“.

7) La Macro nos pedirá:
    a) La ruta y el nombre del fichero Access, por ejemplo “c:\temp\miAccess.mdb”.
    b) El nombre de la tabla o consulta, por ejemplo “miTabla”.

8) Ya hemos terminado.


No hay comentarios:

Publicar un comentario