Imprimir página | Cerrar ventana

Volcar contenido de una tabla a excel existente

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85391
Fecha de impresión: 19/Abril/2024 a las 07:01


Tema: Volcar contenido de una tabla a excel existente
Publicado por: alexmubo
Asunto: Volcar contenido de una tabla a excel existente
Fecha de publicación: 07/Julio/2020 a las 18:49
Hola a todos, hace rato no hacia soluciones en access, pero acabo de terminar un pequeño aplicativo que hace lo que necesito, y de hecho exporta el contenido de una tabla a través de un código que encontré en la web, y funciona bien, pero me gustaría, que me ayudaran por favor, con lo siguiente:

El código exporta a un archivo nuevo y a una hoja creada desde este, pero quisiera que el contenido lo pudiera enviar directamente a un archivo de excel que contiene un formato predeterminado, específicamente el titulo y otras cosas que se manejan. Actualmente lo que hago es copiar y pegar el contenido a ese archivo existente llamado informe, desde el creado de manera automática con este código:


Dim AppExcel As Object, rst As DAO.Recordset, SQL As String, Y As Long, A As Long
    
    On Error GoTo ManipularError
    SQL = "SELECT * FROM Informe_a_publicar"
    Set rst = CurrentDb.OpenRecordset(SQL, dbOpenForwardOnly)
    Set AppExcel = CreateObject("Excel.application")
    AppExcel.Workbooks.Add 'Crea un libro de trabajo nuevo y vacío
    With AppExcel.Sheets(1) 'Edito la hoja 1
        With .Range("A:K") 'Rango de columnas a las que dare formato
            .Font.Name = "Arial" ' Tipo de letra
            .Font.Size = 10 'Tamaño de letra
            .ColumnWidth = 13 'Ancho de columna
        End With
        With .Range("A1:K1") 'Rango de fila a las que dare formato
            .Font.Size = 10 'Tamaño de letra
            '.Font.FontStyle = "Bold" 'Estilo de letra(Negrita)
            '.Interior.ColorIndex = 14 'Color de relleno de celda
        End With
       
        Y = 1   '.........................................................................Mueve las filas para iniciar
        While Not rst.EOF
            
            .Cells(Y, 1) = rst!Tipo '///////////////
            .Cells(Y, 2) = rst!Origen '//////////////////
            .Cells(Y, 3) = rst!Almacen_destino '/////////////// Llenado de filas
            .Cells(Y, 4) = rst!Num_almacen '///////////////
            .Cells(Y, 5) = rst!Material '////////////
            .Cells(Y, 6) = rst!Descripcion '////////////
            .Cells(Y, 7) = rst!Cantidad '////////////
            .Cells(Y, 8) = rst!Serial_ '////////////
            .Cells(Y, 9) = rst!Placa '////////////
            .Cells(Y, 10) = rst!Lote '////////////
            .Cells(Y, 11) = rst!Observacion '////////////
           Y = Y + 1: rst.MoveNext
        Wend
        
    End With
    rst.Close: Set rst = Nothing
    AppExcel.Visible = True: Set AppExcel = Nothing
    Exit Sub
    
ManipularError:
    If Not rst Is Nothing Then rst.Close: Set rst = Nothing
    If Not AppExcel Is Nothing Then AppExcel.DisplayAlerts = False: AppExcel.Quit: Set AppExcel = Nothing


En resumen, quisiera cambiar la parte de crear y abrir un archivo de excel nuevo, por abrir y enviar a un archivo llamado "informe" y a la hoja llamada "formato".

De antemano, muchas gracias en lo que me puedan ayudar


-------------
Dejar que todos den sus ideas es mas inteligente que pensar que uno se las sabe todas.



Respuestas:
Publicado por: emiliove
Fecha de publicación: 07/Julio/2020 a las 18:58
Pues eso es fácil en lugar de Workbooks.Add debes usar Workbooks.Open("Ruta de tu Excel")

Y para la hoja AppExcel.Sheets(1)  solo tienes que cambiar AppExcel.Sheets("NombredetuHoja")
Saludos.




Publicado por: xavi
Fecha de publicación: 07/Julio/2020 a las 19:11
Como otra mejora, en lugar de recorrer el recordset, y asumiendo que los campos del mismo son los que vas a exportar y estan en el mismo orden, podrias utilizar CopyFromRecordset.

https://docs.microsoft.com/es-es/office/vba/api/excel.range.copyfromrecordset" rel="nofollow - https://docs.microsoft.com/es-es/office/vba/api/excel.range.copyfromrecordset

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: alexmubo
Fecha de publicación: 08/Julio/2020 a las 16:36
Emiliove, Excelente, quedo tal como lo necesitaba.

Xavi, gracias por la sugerencia, en este caso no me funciona porque tengo unas imagenes tipo Ole en el campo modelo, pero lo tendré en la cuenta para otro proyecto que solo maneje texto.

Muchas gracias a los dos.

Se puede cerrar el hilo.


-------------
Dejar que todos den sus ideas es mas inteligente que pensar que uno se las sabe todas.



Imprimir página | Cerrar ventana