Access - Exportar un sólo registro de Acces a Excel

   
Vista:

Exportar un sólo registro de Acces a Excel

Publicado por Ricardo (43 intervenciones) el 19/01/2013 23:58:09
¿Cómo hacer posible que se exporte el registro que actualmente está activo en un formulario a una hoja de Excel que ya existe?

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito

Exportar un sólo registro de Acces a Excel

Publicado por Neckkito (1104 intervenciones) el 23/01/2013 19:37:20
Hola!

Echa un vistazo a esta respuesta que di en Todoexpertos, a ver si puede servirte o la puedes adaptar a tus necesidades: http://www.todoexpertos.com/mitodoexpertos/question/xb53rbstgfcn6/usar-una-plantilla-de-excel-para-insertar-datos-de-access

Un saludo,


http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar un sólo registro de Acces a Excel

Publicado por Ricardo (43 intervenciones) el 26/01/2013 11:14:56
Gracias por tu interés Necktito... pero he entrado en todoexpertos con mi usuario y contraseña y cuando accedo al enlace me sale lo siguiente:

Página no autorizada
No tienes permiso para ver la esta página.
Es posible que hayas accedido con un usuario incorrecto o no hayas iniciado una sesión todavía.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito

Exportar un sólo registro de Acces a Excel

Publicado por Neckkito (1104 intervenciones) el 26/01/2013 11:33:14
Hola!
Te transcribo el contenido:


PREGUNTA
Buenas tardes:

Querría conseguir que desde Access se abriera un Excel que tengo como plantilla en la carpeta "Plantilla" y que me rellenara la celda A1 con Nombre, la celda B1 con Apellido, que me pusiera esas dos celdas en negrita, y que en la celda A2 me escribiera el valor del campo Nombre y en la B2 el valor del campo Apellidos de mi formulario.

Espero haberme expresado con claridad.

Gracias por su ayuda.

RESPUESTA
Hola!

Para conseguir lo que quieres te voy a proponer un sistema, dando por sentado que:
1.- Tu archivo libro.xlsx será la plantilla, y nunca se modificará.
2.- Vas a necesitar utilizar el ShellExecute para abrir la plantilla antes de modificarla.

3.- Tu carpeta plantilla se halla en el mismo directorio donde está la BD
4.- El procedimiento va a ser:
a) El código te abre la plantilla
b) Crea una instancia a través de automatización
c) Rellena los datos
d) Te guarda el Excel con otro nombre
En el módulo de formulario debes introducir, al principio (debajo de la línea "Option Compare Database" el código del ShellExecute, que es:
...
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
...
Y en el evento del control que te inicie el proceso le generas el siguiente código:
...
Private Sub...
'Declaramos las variables
Dim vNom As String, vApell As String
Dim rutaPlantilla As String
Dim nuevoExcel As String
Dim miExcel As Object
Dim miHoja As Object
'Cogemos los datos del formulario
vNom = Nz(Me.Nombre.Value, "")
vApell = Nz(Me.Apellidos.Value, "")
'Asignamos la ruta hasta la carpeta para el nuevo Excel
nuevoExcel = Application.CurrentProject.Path & "\Plantilla\"
'Cogemos la ruta de la plantilla
rutaPlantilla = Application.CurrentProject.Path & "\Plantilla\libro.xlsx"
'Abrimos la plantilla de Excel
Call ShellExecute(Me.hwnd, "Open", rutaPlantilla, "", "", 1)
'Capturamos la instancia de Excel para poder operar desde Access
Set miExcel = GetObject(rutaPlantilla)
'Cogemos la "Hoja1" de la plantilla
Set miHoja = miExcel.worksheets("Hoja1")
'Operamos sobre la hoja
With miHoja
.Range("A1").Value = "Nombre"
.Range("B1").Value = "Apellido"
.Range("A1:B1").Font.Bold = True
.Range("A2").Value = vNom
.Range("B2").Value = vApell
End With
'Guardamos el Excel con otro nombre
miExcel.SaveAs nuevoExcel & vApell & ".xlsx"
'Cerramos el Excel
miExcel.Close
End Sub
...
Un par de comentarios:
- Si utilizas esa plantilla las líneas:
.Range("A1").Value = "Nombre"
.Range("B1").Value = "Apellido"
.Range("A1:B1").Font.Bold = True
no harían falta, ya que las podrías escribir y formatear directamente en la propia plantilla.
- El nuevo Excel se guarda en la misma ruta que la plantilla y con vApell como nombre de archivo (a través de la línea <<miExcel.SaveAs nuevoExcel & vApell & ".xlsx">>. Evidentemente puedes modificar el valor de la variable nuevoExcel para que se guarde en otra ruta.
- Doy por sentado que sabes que en el VBE debes añadir la referencia a "Microsoft Excel x,y object library"
Y con eso y un bizcocho... hasta mañana a las ocho :)
Espero que te sea de utilidad.
Un saludo,


Ahí lo tienes. A ver si te sirve.
Saludos,
Neckkito
http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar un sólo registro de Acces a Excel

Publicado por Jorge (1 intervención) el 19/08/2015 18:46:17
Hola Neckito,
cuando ejecuto el VBA, el programa sombrea "Me.Nombre.Value", "Me.Apellidos.Value", Me.hwnd" e indica error de compilación: El uso de la palabra Me no es váildo. Podrías indicarme a que se debe esto y cómo corregir ese error?.. Gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito

Exportar un sólo registro de Acces a Excel

Publicado por Neckkito (1104 intervenciones) el 20/08/2015 08:33:23
Hola Jorge:

El código está preparado para ser utilizado en un módulo de formulario, no en un módulo estándar.

La palabra me, en este contexto, viene a significar "en el formulario en el que estoy".

Ese formulario debe contener, además, dos controles que se llamen "Nombre" y "Apellidos", y que contengan datos.

Finalmente, me.Hwnd devuelve el identificador de la ventana del formulario.

Saludos,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto

Exportar un sólo registro de Acces a Excel

Publicado por Norberto (432 intervenciones) el 29/01/2013 10:37:48
Hola.

Para manipular la hoja de Excel desde Access, añade la referencia a Microsoft Excel XX.X Object Library.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public Sub Exportar_Click()
    Dim Wkb As Excel.Workbook, Wks As Excel.Worksheet, Celda As Excel.Range
    Dim Fld As dao.Field, Rst As dao.Recordset
 
    Set Wkb = Excel.Workbooks.Open("fichero.xls")
    Set Wks = Wkb.Worksheets(1) 'o el número que sea
 
    'Para localizar la primera fila libre, suponiendo
    'que los nombres de campo estén en la primera fila
    'y los registros a partir de la segunda, todos
    'seguiditos sin ningún blanco, al menos en la
    'priemra columna:
    Set Celda = Wks.Range("A1").End(xlDown).Offset(1)
 
    'Para llenar los campos
    Set Rst = Me.RecordsetClone
    Rst.Bookmark = Me.Bookmark
    For Each Fld In Rst.Fields
        Celda.Formula = Fld.Value
        DoEvents
        Set Celda = Celda.Offset(0, 1)
    Next
 
    'Y para terminar
    Wkb.Save
    Wkb.Close
 
    Set Wkb = Nothing
    Set Wks = Nothing
    Set Rst = Nothing
    Set Fld = Nothing
    Set Celda = Nothing
 
End Sub


Si falla algo me lo haces saber. No lo he probado.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar