Access - Exportar Excel con Diseño

 
Vista:
Imágen de perfil de Jhonattan
Val: 308
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Jhonattan (123 intervenciones) el 07/03/2020 16:57:23
Estimados colegas y compañeros de foro, una consulta alguien sabe como exportar datos de un formulario o consulta a excel pero que mantenga un formato determindo, por ejemplo si quiero exportar desde un formulario que tiene datos y totales eso se puede hacer desde Access?
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Joan (150 intervenciones) el 07/03/2020 19:01:31
Hola,

Create en el path donde tengas la base de datos una carpeta "PLANTILLAS" donde guardaras la plantilla. Create otra carpeta "Nuevoexcel" donde guardarás el nuevo archivo, si es otra simplemente cambia la ruta en el codigo.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Option Compare Database
 
#If VBA7 Then
    Private Declare PtrSafe 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
#Else
    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
#End If
 
Private Sub Exportar_Click()
 
Dim rutaPlantilla As String
Dim nuevoExcel As String
Dim miexcel As Object
Dim miHoja As Object
Dim arxiu As String
Dim vtitulo As String
 
'Cogemos los datos del formulario
 
vtitulo = Nz(Me.titulo.Value, "")
NOMBRE = Nz(Me.NOMBRE.Value, "")
cantidad = Nz(Me.cantidad.Value, "")
total = Nz(Me.total.Value, "")
 
'Asignamos la ruta hasta la carpeta donde se guardará el nuevo Excel, se ha de crear una carpeta
nuevoExcel = Application.CurrentProject.Path & "\Nuevoexcel\"
 
'Cogemos la ruta de la plantilla, se ha de crear una carpeta "PLANTILLAS" donde contendrá la plantilla
rutaPlantilla = Application.CurrentProject.Path & "\PLANTILLAS\Plantilla.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, cambiar Hoja1 por el nombre que tenga la pestaña de la hoja
Set miHoja = miexcel.Worksheets("Hoja1")
 
arxiu = CurrentProject.Path & "\Nuevoexcel\" & vtitulo & ".xlsx"
 
'Operamos sobre la hoja
 
With miHoja
 
.Range("A1").Value = vtitulo
.Range("D7").Value = NOMBRE
.Range("D8").Value = cantidad
.Range("D9").Value = total
 
End With
 
'Guardamos el Excel con otro nombre
miexcel.SaveAs nuevoExcel & vtitulo & ".xlsx"
 
'msgbox
MsgBox "El archivo " & vtitulo & ".xlsx " & "se ha guardado en \Nuevoexcel\", vbInformation + vbSystemModal, "Información"
 
'Cerramos el archivo creado sin cerrar Excel totalmente si tuvieremas cualquier otro abierto
 
Dim milibro As Object
Dim esta As Boolean
Dim mifichero As String
esta = False
mifichero = CurrentProject.Path & "\Nuevoexcel\" & vtitulo & ".xlsx"
For Each milibro In miexcel.Application.Workbooks
If milibro.FullName = mifichero Then
esta = True
Else
esta = False
   Exit For
  End If
 
  Next
If esta = True Then
  miexcel.Close
  Shell ("taskkill /f /im excel.exe")
Else
miexcel.Close
End If
 
 
End If
End Sub
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 Jhonattan
Val: 308
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Jhonattan (123 intervenciones) el 08/03/2020 03:58:04
Gracias por la respuesta joan voy a probar el codigo y te digo como me fue!
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 Jhonattan
Val: 308
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Jhonattan (123 intervenciones) el 08/03/2020 04:22:46
Joan algo estare haciendo mal que no funciona el codigo que me sugeriste.

me sale ese error.

Sin-titulo
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Joan (150 intervenciones) el 08/03/2020 11:23:47
Hola,

Del código inicial sobra un End if.

Este mensaje te aparece porque no encuentra Plantilla.xlsx.
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 Jhonattan
Val: 308
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Jhonattan (123 intervenciones) el 08/03/2020 15:43:39
Si Joan lo del end if que sobraba me percate enseguida lo que no logro entender es porque no me consigue la ruta y el archivo si lo tengo tal cual como tu lo indicaste. de hecho mira alli esta la ruta y el libro llamado Plantilla con extensión.xlsx
Sin-titulo
Sin-titulo
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 Jhonattan
Val: 308
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Jhonattan (123 intervenciones) el 08/03/2020 15:49:08
crees que puedas preparar un ejemplo sencillo tal como lo tienes con unos 4 campos para analizar mejor la situación? Si no es mucho abuso de mi parte!
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Joan (150 intervenciones) el 08/03/2020 17:46:34
Has de modificar la lína 31 si le pones directamente la ruta es:

rutaPlantilla = "C:\Users\Computservice\Desktop\Platillas\PLANTILLAS\Nuevoexcel"

Application.CurrentProject.Path se refiere a la unidad, carpeta donde estas ejecutando la base de datos

pero creo que es incorrecto, ha de ser:

1 - Has de crear una carpeta donde contenga la plantilla vacía con el nombre de la plantilla.

rutaPlantilla = "C:\Users\Computservice\Desktop\Platillas\PLANTILLAS\Plantilla.xlsx"

2 - Una carpeta Nuevoexcel donde se guarda el excel que creas.

arxiu = "C:\Users\Computservice\Desktop\Nuevoexcel\nombre.xlsx"
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 Jhonattan
Val: 308
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Jhonattan (123 intervenciones) el 11/03/2020 16:07:02
Hola Joan espero te encuentres muy bien, he seguido tu ejemplo y he podido adaptarlo, pero me surge otro problema el cual he estado tratando de resolverlo y no le veo la solución, y es que en la forma que exporta solo me permite exportar un solo conjunto de datos pero por ejemplo si trato de exportar los datos de un formulario continuo no se puede porque solo exporta el primer registro activo
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Exportar Excel con Diseño

Publicado por Joan (150 intervenciones) el 12/03/2020 08:41:24
Correcto,

Lo que quieres ahora es otra cosa diferente, no indicabas si era formulario continuo o pasar todos los datos, los datos filtrados...

- Crea una consulta.
- Crea una Plantilla excel como tabla rellena los encabezados, en este caso en la fila A.

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
35
36
37
38
39
40
41
42
43
44
45
46
On Error Resume Next
 
Dim rst As DAO.Recordset
Dim Excel As Object
 
Dim miSql As String
Dim dbs As DAO.Database
 
Dim rutaPlantilla As String
Dim nuevoExcel As String
Dim miexcel As Object
 
Set Excel = CreateObject("Excel.Application")
 
Set dbs = CurrentDb
 
miSql = "SELECT [Consulta].* FROM [Consulta]"
 
Set rst = dbs.OpenRecordset(miSql, dbOpenSnapshot)
 
nuevoExcel = Application.CurrentProject.path & "\Nuevoexcel\"
 
rutaPlantilla = Application.CurrentProject.path & "\PLANTILLAS\Plantillacontinuo.xlsx"
 
Call ShellExecute(Me.hwnd, "Open", rutaPlantilla, "", "", 1)
 
Set miexcel = GetObject(rutaPlantilla)
 
With Excel
   .Visible = True
   .Workbooks.Open rutaPlantilla
   .Sheets("Hoja1").Select
   .Range("A2").Select
   .Columns("K:K").ColumnWidth = 45 'tamaño de la columna, en este caso doy ancho a la columna K
   .ActiveCell.CopyFromRecordset rst
   .ActiveWorkbook.SaveAs nuevoExcel & "Nuevo.xlsx"
 
Set Excel = Nothing
 
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
miexcel.Close
 
End With
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