Cargando...
En un post anterior os mostramos como copiar tablas de Access a Excel de forma rapida, evitando los problemas de usar copiar y pegar.
La Macro funcionaba bien, pero puede mejorarse de forma relativamente sencilla para que sea mas reutilizable.
1) La primera mejora es añadir la Macro al libro de Macros Personal, para que este disponible siempre que utilicemos Excel. Sino sabéis como realizarlo os recomiendo que veáis este post del blog de JDL Excel.
2) Reemplazar la entrada manual de la ruta y el nombre Access, mediante una ventana de selección de ficheros. Reemplazamos la instrucción
InputBox(“¿Ruta y nombre del fichero Access?”)
por
Application.GetOpenFilename(“Access (*.mdb), *.mdb”, , “Seleccionar fichero Access”)
3) Reemplazar la entrada manual del nombre de la tabla o consulta por un selector que obtenga un listado de tablas y consultas disponibles. Esto implica la creación de un pequeño formulario y crear una lista de selección. Dada su complejidad y para no complicar este post, este punto lo trataremos en breve en otro post, cuando este publicado incluiremos un enlace.
*) El resultado final a falta de incorporar las mejoras del punto 3. El siguiente código dentro del libro de Personal:
‘==========================================
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 = Application.GetOpenFilename( _
“Access (*.mdb), *.mdb”, , “Seleccionar 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
‘==========================================
9 comentarios sobre Mejorando la Macro de copiar tablas de Access a Excel
por favor si podrian enviarme algunos ejemeplos de tablas para el control de ´personal por fis se los agradeceria estoy haciendo mis recidencias espero y puedan brinadarme el apoyo que necesito se los agradeceria de todo corazon.
Hola Samuel,
Desafortunadamente no existe una solución específica para todas las bases de datos. Una de las virtudes de Access es que tiene asistentes que te ayudarán para casi todo.
Dentro de Access, cuando creas una nueva tabla, te da varias opciones. Una de ellas es un asistente para tablas, dentro de este asistente, incluye la opción de crear una tabla de empleados con los campos típicos de este tipo de tablas.
Espero que esto pueda ayudarte,
Lcflores
Hola sabes yo necesito crear un fomulario en Excel . los Datos que escriba en el Formulario como hago para que se me escriban en las celdas, Como puedo hacer para grabar esos datos del formulario en la hoja de Excel.
si me puedes mandar un ejemplo te lo agradeceria
Wilver constanza
Hola, con respecto a la ventana de selección de ficheros….me da continuamente error de sintaxis, podrías especificar mejor los campos?? simplemente tengo que especificar el nombre de mi fichero access? indico también el pad??
Gracias!!
Hola Aliuskof,
Debes indicar también el path. Mira que no tengas caracteres extraños, como: ‘ ´ & % / – y cosas de ese estilo.
Suerte,
Lcflores
Gracias!!! lo conseguí!!!
Ahora me surge una duda muy tonta, existe la posibilidad de, desde access, con la función TransferirHojaCalculo, a la hora de especificar el archivo excel al que quieres que te exporte la consulta, especificar también la hoja y la celda a partir de los cuales se copian los datos???
Gracias otra vez
Hola Aliuskof,
Si se puede exportar desde Access a Excel y seleccionar los datos que quieres pasar a cada una de las celdas. Lo malo es que en ese la macro de este post no vale, debería ser totalmente diferente ya que tendría que usar los objetos de Access y crear un objeto de Excel (la macro actual es justo al contrario). No es algo que pueda indicarte fácilmente en un comentario 🙁 , intentaré hacer un ejemplo y postearlo.
Un saludo,
Lcflores
Ahm, gracias, yo lo que he visto es algo así ‘[fichero.xls]Hoja’!$A$3 a la hora de especificar el lugar donde colocar los datos de access, he probado y no funciona, de todas formas tampoco me queda claro si tengo que usar la función SalidaHacia, TransferirHojaCalculo.
Gracias…
Hola, mi granito de arena para este codigo es lo siguiente:
Note que al aparecer el buscador del archivo de acces, si se te ocurre arrepentirte y le pones cancel, la macro colapsa y te marca un error, para arreglar eso solo coloquen la siguiente linea:
On Error Resume Next
despues del siguiente codigo:
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
On Error Resume Next
Y con esto evitamos el error, estupendo foro!…
Deja tu comentario sobre Mejorando la Macro de copiar tablas de Access a Excel
*Nota: Sólo se tendrán en cuenta los comentarios correctamente redactados y que estén relacionados con el tema de la entrada.RSS a los comentarios de esta entrada · TrackBack URI