Trasladar datos de un formulario a otro archivo xl

Buenas tardes
Agradeceré la valiosa ayuda que me puedan brindar ya que no conozco mucho de VB, sin embargo con ejemplos y comentarios en este foro voy realizando lo siguiente. En un libro de excel hice un formulario en el cual se digitan los datos de un registro (nombre_cliente, cantidad_contenedores, tipo_contenedores, etc).
Hasta aquí todo bien. Ahora lo que no puedo hacer es programar un botón que al darle el clic:
1- Copie los datos de los distintos campos en un archivo distinto (DB_control.xls).
2- Que para copiar esos datos (registro) se vaya a la siguiente fila en blanco, o sea, que respete los registros existentes.
3- Una vez copiado el registro, se guarde el archivo DB_control.xls y se limpien los campos del formulario.
Por favor, de antemano les agradezco.
Saludos

1 respuesta

Respuesta
1
Prueba el siguiente código (ajustándolo un poco a lo que necesites):
Option Explicit
Private Sub btnGuardar_Click()
    Dim wb As Workbook
    Dim nLin As Integer
    Dim nomXls As String
    ' Deberíamos comprobar que el contenido de los campos sea correcto
    If Me.nombre_cliente = "" Then
        MsgBox "No hay nombre del cliente"
        Exit Sub
    End If
    If Me.cantidad_contenedores = "" Then
        MsgBox "No hay ningún valor en cantidad de contenedores"
        Exit Sub
    End If
    If Not IsNumeric(Me.cantidad_contenedores) Then
        MsgBox "El valor de cantidad de contenedores no es un número"
        Exit Sub
    End If
    ' ... Seguir con todas las comprobaciones necesarias ...
    ' Aquí es cuando guardamos los datos en la hoja de cálculo de control
    ' Supongamos que la hoja de cálculo 'db_control' está en la misma carpeta
' que la que contiene el formulario (en la que está este código)
    nomXls = ThisWorkbook.Path & "\db_control.xls"
    ' O bien está en una carpeta fija
    nomXls = "d:\db_control.xls"
    Set wb = Workbooks.Open(nomXls, False, False)
    nLin = 1
    Do While wb.Sheets("hoja1").Cells(nLin, 1) <> ""
        nLin = nLin + 1
    Loop
    wb.Sheets("hoja1").Cells(1, 1) = Me.nombre_cliente
    wb.Sheets("hoja1").Cells(1, 2) = Me.cantidad_contenedores
    wb.Sheets("hoja1").Cells(1, 3) = Me.tipo_contenedores
    wb.Save
    wb.Close
    Set wb = Nothing
End Sub
Hola
Muchas gracias or sus indicaciones. Voy a realizar la prueba y luego finalizo, a menos que algo no me funcione por ahí (te molestaría de nuevo ;)
Saludos
Disculpa un fallo que acabo de ver
Al final pone...
    wb.Sheets("hoja1").Cells(1, 1) = Me.nombre_cliente
    wb.Sheets("hoja1").Cells(1, 2) = Me.cantidad_contenedores
    wb.Sheets("hoja1").Cells(1, 3) = Me.tipo_contenedores
... y debería poner...
    wb.Sheets("hoja1").Cells(nLin, 1) = Me.nombre_cliente
    wb.Sheets("hoja1").Cells(nLin, 2) = Me.cantidad_contenedores
    wb.Sheets("hoja1").Cells(nLin, 3) = Me.tipo_contenedores
... sino siempre te grabaría en la línea 1.
Es posible que, cuando vayas a grabar, se vea cómo se abre y cierra el otro libro. Eso se podría evitar abriendo una nueva aplicación Excel que no fuera visible, pero es bastante más lento y ocupa más memoria.
Ya me comentarás si va bien.
Buenas tardes
Efectivamenate fue la solución para mi problema.
Realmente agradezco su atención y dedicación. Ya tengo muy adelantado mi "proyecto". Me gustaría que me regalara su mail para poder realizarle alguna pregunta eventual. Mi correo es (xxxxxx)
PD: Obviamente, van todas las estrellas
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas