Access - error en código de exportación de consulta a excel

 
Vista:
sin imagen de perfil

error en código de exportación de consulta a excel

Publicado por carlos aprendiz (70 intervenciones) el 27/05/2024 00:25:58
Saludoos amigos, tengo este código que me exporta una consulta de access a un libro de excel que tiene una plantilla:
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
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 ExpProgEmit_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 vNombrePrograma As String
 
    Dim Ruta: Ruta = CurrentProject.Path: Ruta = Left(Ruta, InStrRev(Ruta, "\")) & "tmp_SGRADIO_CAPTAv1.0 EXPORTA\"
 
    vNombrePrograma = Nz(Me.NombrePrograma.Value, "")
 
    ' Crear una nueva instancia de Excel
    Set XL = CreateObject("Excel.Application")
 
    Set dbs = CurrentDb
 
    miSql = "SELECT [ProgramaEmitido].* FROM [ProgramaEmitido]"
 
    Set rst = dbs.OpenRecordset(miSql, dbOpenSnapshot)
 
    ' Asignar la ruta hasta la carpeta para el nuevo Excel
    nuevoExcel = Ruta
 
    ' Coger la ruta de la plantilla
    rutaPlantilla = Ruta & "\PLANTILLAS\PlantillaPM.xls"
 
    ' 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:="190668", AllowFiltering:=True 'Proteger
    .ActiveWorkbook.SaveAs nuevoExcel & "ProdMusicalv1.0 " & DLookup("FProg", "ProgramaEmitidoFecha") & ".xls"
    .ActiveWorkbook.Close SaveChanges:=False
    .DisplayAlerts = True
    .Quit
 
    End With
 
    Dim miArchivo As Object
    Set miArchivo = GetObject(nuevoExcel & "ProdMusicalv1.0 " & DLookup("FProg", "ProgramaEmitidoFecha") & ".xls")
    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
 
    DoCmd.Close acForm, "F_ExpPM"
 
    DoCmd.OpenForm "F_ProgramasEmitidos"
 
    MsgBox "La exportación se ha guadado en ...\SGRADIO_CAPTAv1.0\tmp_SGRADIO_CAPTAv1.0 EXPORTA", vbInformation + vbSystemModal, "Información"
End Sub

A veces me das error, a veces no

codigo1

y los errores son en estas líneas:

Set miArchivo = GetObject(nuevoExcel & "ProdMusicalv1.0 " & vNombrePrograma & ".xls")
miArchivo.Close SaveChanges:=True


necesito me ayuden a resolver este problema, gracias
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 Pelida
Val: 6
Ha disminuido su posición en 64 puestos en Access (en relación al último mes)
Gráfica de Access

error en código de exportación de consulta a excel

Publicado por Pelida (7 intervenciones) el 28/05/2024 09:37:45
Hola Carlos. Por lo que veo en tu código usas un archivo Excel como plantilla, le vuelcas los registros de un recordset y lo guardas con un nombre diferente ¿es así?, como creo que si entonces no entiendo porque los "GetObject" y el "Call ShellExecute", 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

error en código de exportación de consulta a excel

Publicado por carlos aprendiz (70 intervenciones) el 28/05/2024 13:20:25
Si amigo, ahí estaba el error que está arreglado ya. 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