Access - exportar desde Access a Excel una consulta

 
Vista:
sin imagen de perfil

exportar desde Access a Excel una consulta

Publicado por carlos (46 intervenciones) el 02/08/2023 05:49:45
Saludos, tengo una consulta que deseo exportar desde Access a una plantilla en Excel, la plantilla en Excel debe tener dos hojas, Origen y Programas. Necesito que la hoja Origen reciba los datos que se exportan desde la consulta de Access y quede protegida totalmente y usar los datos en la hoja Programas vinculados a la hoja Origen. Si es posible que la hoja Programas quede con las celdas protegidas a partir de la fila de encabezados de columnas y que esos encabezados queden con la opción de filtrado y para terminar que la hoja se guarde con nombre, ejemplo: Programas Emitidos y el año en curso, esto es para exportar el cierre del año de trabajo a ese libro de Excel. No se si estaré pidiendo mucho pero no tengo ni idea de como hacerlo y si se puede hacer. Gracias

Estos son los campos de la consulta
NombrePrograma FechaPrograma TituloTema Genero NombreAutor PaisAutor ZonaGeografica NombreInterprete PaisInterprete Sonatas
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
sin imagen de perfil

exportar desde Access a Excel una consulta

Publicado por carlos (46 intervenciones) el 02/08/2023 23:04:43
Saludos joan, revise lo el enlace y me pareció adecuado a lo que necesitaba excepto por tres cosas:
1.- Solo me exporta el registro activo del formulario, un registro, (la exportación del ejemplo que le voy a adjuntar son 7545 registros, el ejemplo tiene una consulta y creo que si se hiciera la exportación desde ella sería genial)
2.- Ya que imagino que no puedas proteger las celdas con datos entonces necesitaría que al menos el libro que es la exportación de los datos pudiera guardarse con contraseña para protegerlo un poco más
3.- Solucionar el por qué se queda un Excel abierto después de hacer el proceso.
Por lo demás me siento satisfecho de lo que hice con tu ejemplo y se lo envío para que lo revise. Trabaja en D:\
Un apretón de manos desde Cuba y agradecido
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 desde Access a Excel una consulta

Publicado por Joan (91 intervenciones) el 03/08/2023 14:01:04
Hola,

Estoy en ello, cuando tenga un hueco te lo modifico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

exportar desde Access a Excel una consulta

Publicado por carlos (46 intervenciones) el 03/08/2023 14:06:55
Gracias amigo
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 desde Access a Excel una consulta

Publicado por Joan (91 intervenciones) el 03/08/2023 19:08:01
Hola,

Creo que esto es lo que necesitas. ten en cuenta que he añadido la Referencia, Microsoft Office 16.0, lo digo por si lo exportas a otra base de datos.

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
Option Compare Database
Option Explicit
 
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
 
Private Sub Exportar_Click()
 
    Dim rst As DAO.Recordset
    Dim XL As Object
 
    Dim miSql As String
    Dim dbs As DAO.Database
 
    Dim rutaPlantilla As String
    Dim nuevoExcel As String
    Dim vSGRadio As String
 
    vSGRadio = Nz(Me.SGRadio.Value, "")
 
    ' Crear una nueva instancia de Excel
    Set XL = CreateObject("Excel.Application")
 
    Set dbs = CurrentDb
 
    miSql = "SELECT [Consulta2].* FROM [Consulta2]"
 
    Set rst = dbs.OpenRecordset(miSql, dbOpenSnapshot)
 
    ' Asignar la ruta hasta la carpeta para el nuevo Excel
    nuevoExcel = Application.CurrentProject.Path & "\SALVAS\"
 
    ' Coger la ruta de la plantilla
    rutaPlantilla = Application.CurrentProject.Path & "\PLANTILLAS\Plantilla.xlsx"
 
    ' Abrir la plantilla de Excel
    Call ShellExecute(Me.hwnd, "Open", rutaPlantilla, "", "", 1)
 
    With XL
 
    .DisplayAlerts = False
    .Workbooks.Open rutaPlantilla
    .Sheets("Hoja1").Select
    .Range("A2").Select
    .ActiveCell.CopyFromRecordset rst
    .ActiveSheet.Protect Password:="1234" 'Proteger
    .ActiveWorkbook.SaveAs nuevoExcel & vSGRadio & ".xlsx"
    .ActiveWorkbook.Close SaveChanges:=False
    .DisplayAlerts = True
    .Quit
 
    End With
 
    Dim miArchivo As Object
    Set miArchivo = GetObject(nuevoExcel & vSGRadio & ".xlsx")
    miArchivo.Close SaveChanges:=False
    Set miArchivo = Nothing
 
    Dim plantilla As Object
    Set plantilla = GetObject(rutaPlantilla)
    plantilla.Close SaveChanges:=False
    Set plantilla = Nothing
 
    Set XL = Nothing
    rst.Close
    dbs.Close
    Set rst = Nothing
    Set dbs = Nothing
 
    MsgBox "La salva de los datos: " & vSGRadio & ".xlsx " & ",se ha guardado en \SALVAS\", vbInformation + vbSystemModal, "Información"
 
End Sub

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
1
Comentar
sin imagen de perfil

exportar desde Access a Excel una consulta

Publicado por carlos (46 intervenciones) el 04/08/2023 01:05:07
Amigo, perfecto, así mimos como lo necesitaba, muchas gracias, solo un detalle, una pregunta porque realmente no se si es posible hacerlo. Pensando en las cosas que pudieran necesitar las personas, como esos datos salieron ya de Access y las respectivas tablas que los contenían quedan vacías, y queriendo hacer un filtrado en el libro, por ejemplo, ante una reclamación sobre un tema musical X de su autor, para poder saber cuantas veces fue radiado en ese año que se cerró, no es posible hacerlo porque está con Password el libro , pensando también en las imprudencias de las personas, se le da el Password y entonces sin querer borran o eliminan datos. Que pudiéramos hacer en ese caso, porque yo hubiera protegido las celdas a partir de la celda A2 y dejaba la cabecera de las columnas con el filtro para esa opción pero no se si es posible hacerlo desde VBA. Que opinas?
Miles de gracias por su ayuda
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 desde Access a Excel una consulta

Publicado por Joan (91 intervenciones) el 04/08/2023 14:16:52
Cambia la línea 46.

1
.ActiveSheet.Protect Password:="1234", AllowFiltering:=True 'Proteger

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

exportar desde Access a Excel una consulta

Publicado por carlos (46 intervenciones) el 04/08/2023 15:28:08
Amigo Joan, perfecto, así es como lo necesitaba, le doy las gracias infinitas por todo lo que me ha ayudado y la posibilidad de aprender más, nuevamente gracias.
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
sin imagen de perfil

exportar desde Access a Excel una consulta

Publicado por carlos (46 intervenciones) el 05/08/2023 13:43:57
Una pregunta, para una ayuda sobre seguridad a la base de datos hay que abrir otro tema?
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 desde Access a Excel una consulta

Publicado por Joan (91 intervenciones) el 05/08/2023 17:52:02
Si, claro.
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
sin imagen de perfil

exportar desde Access a Excel una consulta

Publicado por carlos (46 intervenciones) el 22/09/2023 21:50:20
Hola Joan, te pido de favor repases este hilo para ver si me ayudas porque el código me está dando estos errores
Primero me abre con problemas la plantilla.xlsx


1

Luego me da este error en el código

2


3

No se que puede haber pasado, así quedó el código adaptado a mi programa
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
Option Compare Database
Option Explicit
 
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
 
Private Sub Exportar_Click()
 
    Dim rst As DAO.Recordset
    Dim XL As Object
 
    Dim miSql As String
    Dim dbs As DAO.Database
 
    Dim rutaPlantilla As String
    Dim nuevoExcel As String
    Dim vSGRadio As String
 
    vSGRadio = Nz(Me.SGRadio.Value, "")
 
    ' Crear una nueva instancia de Excel
    Set XL = CreateObject("Excel.Application")
 
    Set dbs = CurrentDb
 
    miSql = "SELECT [TemasEnProgramasRadiadosTotal].* FROM [TemasEnProgramasRadiadosTotal]"
 
    Set rst = dbs.OpenRecordset(miSql, dbOpenSnapshot)
 
    ' Asignar la ruta hasta la carpeta para el nuevo Excel
    nuevoExcel = Application.CurrentProject.Path & "\DEL PROGRAMA\SALVAS DATOS\"
 
    ' Coger la ruta de la plantilla
    rutaPlantilla = Application.CurrentProject.Path & "\DEL PROGRAMA\SALVAS DATOS\PLANTILLAS\Plantilla.xlsx"
 
    ' Abrir la plantilla de Excel
    Call ShellExecute(Me.hwnd, "Open", rutaPlantilla, "", "", 1)
 
    With XL
 
    .DisplayAlerts = False
    .Workbooks.Open rutaPlantilla
    .Sheets("Hoja1").Select
    .Range("A2").Select
    .ActiveCell.CopyFromRecordset rst
    .ActiveSheet.Protect Password:="c190623", AllowFiltering:=True 'Proteger
    .ActiveWorkbook.SaveAs nuevoExcel & vSGRadio & ".xlsx"
    .ActiveWorkbook.Close SaveChanges:=False
    .DisplayAlerts = True
    .Quit
 
    End With
 
    Dim miArchivo As Object
    Set miArchivo = GetObject(nuevoExcel & vSGRadio & ".xlsx")
    miArchivo.Close SaveChanges:=False
    Set miArchivo = Nothing
 
    Dim Plantilla As Object
    Set Plantilla = GetObject(rutaPlantilla)
    Plantilla.Close SaveChanges:=False
    Set Plantilla = Nothing
 
    Set XL = Nothing
    rst.Close
    dbs.Close
    Set rst = Nothing
    Set dbs = Nothing
 
    MsgBox "La salva de los datos: " & vSGRadio & ".xlsx " & ",se ha guardado en D:\SG RADIO\DEL PROGRAMA\SALVAS DATOS\", vbInformation + vbSystemModal, "Información"
 
End Sub

Saludos
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 desde Access a Excel una consulta

Publicado por Joan (91 intervenciones) el 23/09/2023 11:08:39
Con qué Office trabajas, 365?
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
sin imagen de perfil

exportar desde Access a Excel una consulta

Publicado por carlos (46 intervenciones) el 23/09/2023 13:20:41
Office 2016
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 desde Access a Excel una consulta

Publicado por Joan (91 intervenciones) el 23/09/2023 18:05:33
He modificado el código, éste no te tendría que dar ningún error.

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
Private Sub Exportar_Click()
 
    Dim rst As DAO.Recordset
    Dim miSql As String
    Dim dbs As DAO.Database
 
    Dim XL As Object
    Dim rutaPlantilla As String
    Dim nuevoExcel As String
    Dim miHoja As Object
 
    Dim vSGRadio As String
 
    vSGRadio = Nz(Me.SGRadio.Value, "")
 
    ' Crear una nueva instancia de Excel
 
    Set dbs = CurrentDb
    miSql = "SELECT [TemasEnProgramasRadiadosTotal].* FROM [TemasEnProgramasRadiadosTotal]"
    Set rst = dbs.OpenRecordset(miSql, dbOpenSnapshot)
 
    ' Asignar la ruta hasta la carpeta para el nuevo Excel
 
    nuevoExcel = Application.CurrentProject.Path & "\DEL PROGRAMA\SALVAS DATOS\"
 
    ' Coger la ruta de la plantilla
 
    rutaPlantilla = Application.CurrentProject.Path & "\DEL PROGRAMA\SALVAS DATOS\PLANTILLAS\Plantilla.xlsx"
 
    Set XL = CreateObject("Excel.Application")
    XL.Visible = False
 
    XL.Workbooks.Open rutaPlantilla
 
    'Cogemos la Hoja de la plantilla
    Set miHoja = XL.activeworkbook.Worksheets("Hoja1")
 
    With XL
 
    .Range("A2").Select
 
    .ActiveCell.CopyFromRecordset rst
 
    .ActiveSheet.Protect Password:="c190623", AllowFiltering:=True 'Proteger
 
    End With
 
    nuevoExcel = nuevoExcel & vSGRadio & ".xlsx"
 
    'Guardamos el Excel con otro nombre
    XL.Application.DisplayAlerts = False
    XL.activeworkbook.SaveAs nuevoExcel
    XL.Application.DisplayAlerts = True
    XL.activeworkbook.Close False
    XL.Quit
    Set XL = Nothing
 
    rst.Close
    dbs.Close
    Set rst = Nothing
    Set dbs = Nothing
 
    MsgBox "La salva de los datos: " & vSGRadio & ".xlsx " & ",se ha guardado en D:\SG RADIO\DEL PROGRAMA\SALVAS DATOS\", vbInformation + vbSystemModal, "Información"
 
 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
1
Comentar
sin imagen de perfil

exportar desde Access a Excel una consulta

Publicado por carlos (46 intervenciones) el 23/09/2023 23:55:20
Amigo, perfecto, no había tenido tiempo hasta ahora de revisar, pero perfecto todo, gracias y bendiciones desde Cuba
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