Access - Exportar a excel a más de una Hoja

   
Vista:

Exportar a excel a más de una Hoja

Publicado por Angel (96 intervenciones) el 23/03/2018 17:56:59
Hola gente y desde ya muchas gracias! Tengo el siguiente código VBA que utilizo para exportar una consulta de access a excel (hoja1). Me gustaría poder exportar varias consultas a distintas hojas de excel.

1
2
3
4
5
6
7
DoCmd.OutputTo acOutputQuery, "cCierre", "ExcelWorkbook(*.xlsx)", "C:\InformesOjo\InfosCat.xlsx", False, "", , acExportQualityScreen
Dim appExcel As New Excel.Application
Dim Libro As Excel.Workbook
Dim Hoja As Excel.Worksheet
Set Libro = appExcel.Workbooks.Open(FileName:="C:\InformesOjo\InfosCat.xlsx", UpdateLinks:=xlUpdateLinksAlways, Password:=" ")
Set Hoja = Libro.Worksheets.item(Item 1)
Libro.Close SaveChanges:=True

Muchas gracias desde ya!
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 Norberto

Exportar a excel a más de una Hoja

Publicado por Norberto (590 intervenciones) el 26/03/2018 15:48:13
Hola.

Como el método OutputTo no permite especificar la hoja, se me ha ocurrido este sistema:

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
Dim miExcel As Excel.Application, miLibro1 As Excel.Workbook, miLibro2 As Excel.Workbook
    Dim miHoja2 As Excel.Worksheet, i As Integer
    Dim Path As String
    Const NombreLibro = "Resultados consultas.xlsx"
 
On Error GoTo Exportar_Err
 
    Set miExcel = CreateObject("Excel.Application")
    'Creamos un nuevo libro
    Set miLibro1 = miExcel.Workbooks.Add
    Path = CurrentProject.Path & "\"
    'Si ya hay un libro con ese nombre lo eliminamos
    If Dir(Path & NombreLibro) <> "" Then
        Kill Path & NombreLibro
    End If
    'Lo guardamos
    miLibro1.SaveAs Path & NombreLibro
 
    For i = 1 To 3
        'Exportamos la consulta
        DoCmd.OutputTo acOutputQuery, "MiSQL" & i, acFormatXLSX, Path & "Temp" & i & ".xlsx", False
        'Abrimos el libro recién creado
        Set miLibro2 = miExcel.Workbooks.Open(Path & "Temp" & i & ".xlsx")
        'Seleccionamos la hoja1
        Set miHoja2 = miLibro2.Worksheets(1)
        'La copiamos al libro nuevo
        miHoja2.Copy Before:=miLibro1.Worksheets(i)
        'Cerramos el libro temporal
        miLibro2.Close False
        'Y lo borramos
        Kill Path & "temp" & i & ".xlsx"
    Next
    'Lo hacemos visible y lo guardamos
    miExcel.Visible = True
    miLibro1.Save
 
GoTo Exportar_Fin
 
    'Control de errores
Exportar_Err:
    If Err = 1004 Or Err = 70 Then 'No se puede acceder al libro
        MsgBox "El libro " & NombreLibro & " puede que esté abierto. Ciérrelo e inténtelo de nuevo."
    Else
        MsgBox "ERROR " & Err.Number & ": " & Err.Description
    End If
 
Exportar_Fin:
 
    Set miExcel = Nothing
    Set miLibro1 = Nothing
    Set miLibro2 = Nothing
    Set miHoja2 = Nothing
 
End Sub

En este caso, las consultas se llaman miSQL1 a miSQL3. Puedes darles otros nombres y modificar el código.

Un saludo,

Norberto.

En este caso se exportan
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

Exportar a excel a más de una Hoja

Publicado por Angel (96 intervenciones) el 27/03/2018 01:48:10
Muchas gracias Norberto... me dado resultados tu solución!
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