** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Volcar contenido de una tabla a excel existente
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoVolcar contenido de una tabla a excel existente

 Responder Responder
Autor
Mensaje
alexmubo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 15/Diciembre/2010
Localización: Colombia
Estado: Sin conexión
Puntos: 467
Enlace directo a este mensaje Tema: Volcar contenido de una tabla a excel existente
    Enviado: 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.
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
Enlace directo a este mensaje Enviado: 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.




Editado por emiliove - 07/Julio/2020 a las 22:30
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 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.


Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
alexmubo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 15/Diciembre/2010
Localización: Colombia
Estado: Sin conexión
Puntos: 467
Enlace directo a este mensaje Enviado: 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.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable