¿Cómo juntar archivos excel sacados desde access?

Me han pedido que haga una cosa con Access que no se si es possible. La question es que tengo una base de datos en Access en la que hay un formulario principal donde se llenan unos campos para guardarlos en un registro de la tabla. Lo que me piden es que al darle a un botón, ciertos campos que yo escoja del registro en el que me encuentre, se exporten a una hoja de excel, pero, que cuando lo vuelva a hacer, no se me sobrescriba la hoja anterior, sino que el registro se guarde a continuación del que anteriormente se guardo en esa hoja de excel. No se si me he explicado bien. Espero que podáis ayudarme. GRACIAS!
{"lat":41.2878682307975,"lng":1.25295639038086}

1 respuesta

Respuesta
1
'Pega este codigo en el clic de un boton
'codigo para seleccionar y abrir un libro de excel
'Referencia Requerida
    'Microsoft Office 12.0 Object Library
'Para utilizar esta referencia en el menu de la ventana VBA ir a Tools, References...
'En Available reference:
' Seleccionar: 'Microsoft Office 12.0 Object Library y clic en OK
Dim Ruta As Office.FileDialog
    Set Ruta = Application.FileDialog(msoFileDialogOpen)
     With Ruta
     With .FILTERS
            .Clear
            .Add "Excel", "*.xls;*.xlsm;*.xlsx", 1
            .Add "Todos", "*.*", 2
    End With
    .Title = "seleccionar imagen"
    .AllowMultiSelect = False
    .InitialFileName = CurrentProject.Path
    .InitialView = msoFileDialogViewDetails
    If .Show Then
        fArchivoImagen = .SelectedItems(1)
    End If
    End With
 If IsEmpty(fArchivoImagen) Then
    MsgBox "Process canceled by user", vbCritical, "Analysis"
    Exit Sub
 End If
    Dim xls As Object
    Set xls = CreateObject("excel.application")
    xls.Workbooks.Open fArchivoImagen
    xls.Visible = True
    xls. Sheets("Sheet1").Select 'Seleccionar Hoja donde esta la informacion
    xls. Range("a1").Select ' seleccionas columna donde se verificara la continuidad de los registros
Do While xls.activecell.Value <> ""
    xls.activecell.Offset(1, 0).Activate
Loop
'hasta aqui tenes celda en donde debes pegar el nuevo registro
'dame un email por si no te funciona te envio la base con este codigo y un 'libro de excel de ejemplo
Muchas gracias por la respuesta. Creo que por ahí van los tiros por lo que he podido medio sacar. Me seria de grandissima ayuda que me enviases un email con el ejemplo de base de datos y tabla excel que tu usas para este código, así vería que es cada variable y que es lo que llamas. En resumen, que entendería mejor el código. Mi correo es (xxxxxx)
Espero tu respuesta amigo! Muchísimas gracias.
Ok te envíe la base de datos y el archivo de excel simulando un escenario básico.
Okey, lo he recibido, pero no me funciona. La verdad es que en este sentido estoy muy pez. La cosa es que he puesto la librería de referencia y he copiado el código y no sucede nada. El botón no hace ninguna acción.
Me podrías aclarar que significa más o menos cada parte del código y que debo hacer con ella (cuales son los valores que cojera del formulario, donde le tengo que poner la url del archivo excel donde quiero que lo ponga... ¿etc)? Lo siento por la ignorancia. Muchas gracias de antemano!
Ok para explicarte mejor necesito un libro de excel y una base de datos con el nombre de la tabla y el nombre de las columnas tal y como las tienes en tu base original, no necesito la información, crea un par de registro en excel y en access y enviame ambos archivos. Te pido esto para que el ejemplo te quede más claro, envialos a mi email ya lo tienes...
Voy a pegar el código que hemos estado desarrollo a través de email, tal vez a alguien le sirva:
Rutina completa para pegar el registro actual en excel después del ultimo registro encontrado en excel:
Dim Ruta As Office.FileDialog
Set Ruta = Application.FileDialog(msoFileDialogOpen)
With Ruta
With .FILTERS
.Clear
.Add "Excel", "*.xls;*.xlsm;*.xlsx", 1
.Add "Todos", "*.*", 2
End With
.Title = "seleccionar imagen"
.AllowMultiSelect = False
.InitialFileName = CurrentProject.Path
.InitialView = msoFileDialogViewDetails
If .Show Then
fArchivoImagen = .SelectedItems(1)
End If
End With
If IsEmpty(fArchivoImagen) Then
MsgBox "Process canceled by user", vbCritical, "Analysis"
Exit Sub
End If
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Change proposals")
rs.MoveFirst
Dim xls As Object
Set xls = CreateObject("excel.application")
xls.Workbooks.Open fArchivoImagen
xls.Visible = True
xls.Sheets("Sheet1").Select 'Seleccionar Hoja donde esta la informacion
xls.Range("a1").Select ' seleccionas columna donde se verificara la continuidad de los registros
xls.Range("a1").Value = "TITEL"
xls.Range("B1").Value = "ENTERED BY"
xls.Range("C1").Value = "DATE OF ENTERING"
Do While xls.activecell.Value <> ""
xls.activecell.Offset(1, 0).Activate
Loop
celda = xls.activecell.row - 1
celda = celda + 1
xls.cells(celda, 1).Value = Me.Titel.Value
xls.cells(celda, 2).Value = Me.[Entered by].Value
xls.cells(celda, 3).Value = Format(Me.date_of_entering.Value, "medium date")
Código para copiar desde un recordset. Solo agrego el código que cambia con respecto al código anterior (comparar):
celda = xls.activecell.row - 1
Do While Not rs.EOF
celda = celda + 1
xls.cells(celda, 1).Value = rs!Titel
xls.cells(celda, 2).Value = rs![Entered by]
xls.cells(celda, 3).Value = Format(rs!date_of_entering, "medium date")
rs.MoveNext
Loop

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas