Formulario con 2 combobox y guardar datos en diferente libro

Un mega favor esperando que me puedas ayudar

Tengo un formulario con 2 combobox los cuales el primero

Con el siguiente código

Private Sub UserForm_Activate()

'Captura datos y guarda en empresa

ws_Count = ActiveWorkbook.Worksheets.Count

For i = 1 To ws_Count

With Me.ComboBox2

.AddItem Worksheets(i).Name

End With

Next

'para agregar otra lista desplegable

mio = ActiveWorkbook.Name

For Each hoja In ActiveWorkbook.Sheets

ComboBox2.AddItem hoja.Name

Next

MsgBox "carga el archivo que dice conceptos"""

archivo = Application.GetOpenFilename

If archivo = False Then Exit Sub

Workbooks.Open archivo

otro = ActiveWorkbook.Name

For Each hoja In ActiveWorkbook.Sheets

ComboBox1.AddItem hoja.Name

Next

End Sub

Este es el código que estoy ocupando

En el combobox1 se cargan las hojas de un libro que se llama conceptos pero tengo quengo que seleccionarlo lo que quiero hacer es que todo mi archivo lo guarde en una carpeta y solo darle la ruta sin que lo tenga que estar relacionando por que ademas me abre el libro que la verdad no me interesa que me lo abra pero si que me guarde los datos

En el combobox2 se cargan las hojas del libro que ocupo y en este libro tengo el formulario

Y tengo 2 botones para guardar los datos

Con el siguiente código donde no se como hacerle para que me guarde la información

En los dos libros

Private Sub CommandButton1_Click()

'Guarda datos

'dam

Call copia

UserForm3.Hide

End Sub

Sub copia()

If ComboBox1 = "" Then

MsgBox "Seleccionar Empresa", vbCritical

ComboBox1.SetFocus

Else

Sheets(ComboBox1.Value).Select

ufila = Range("A" & Rows.Count).End(xlUp).Row + 1

Cells(ufila, 1) = TextBox1

Cells(ufila, 2) = TextBox3 + " " + ComboBox2

Cells(ufila, 8) = TextBox4

End If

If ComboBox2 = "" Then

MsgBox "Seleccionar Empresa", vbCritical

ComboBox2.SetFocus

Else

Sheets(ComboBox2.Value).Select

ufila = Range("A" & Rows.Count).End(xlUp).Row + 1

Cells(ufila, 1) = TextBox1

Cells(ufila, 2) = TextBox2

Cells(ufila, 0) = TextBox3

End If

Call limpia

End Sub

Private Sub CommandButton2_Click()

Call copia

ActiveWorkbook.Save

Call limpia

UserForm3.Hide

End Sub
Sub limpia()

ComboBox1.Clear

TextBox1 = ""

TextBox3 = ""

TextBox4 = ""

end sub

En teoría lo que quiero hacer es que en el formulario me muestre en el combobox2 me muestre la lista de las hojas de que tengo en mi libro de trabajo

En el combobox1 me muestre la lista de las hojas de el lidro llamado conceptos (pero sin que me lo abra solo que me guarde los datos) que esta guardado en la carpeta aljibre que esta el el directorio C:\Users\Lety\Desktop\aljibre en esta carpeta también esta el libro llamado aljibre1 donde boy a trabajar siempre

Y que con los botones de guardado se guarde la información en los dos libros

1 respuesta

Respuesta
1

Según pude entender en esta parte guardas en los 2 libros

Sheets(ComboBox1.Value).Select
ufila = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(ufila, 1) = TextBox1
Cells(ufila, 2) = TextBox3 + " " + ComboBox2
Cells(ufila, 8) = TextBox4
End If
If ComboBox2 = "" Then
MsgBox "Seleccionar Empresa", vbCritical
ComboBox2.SetFocus
Else
Sheets(ComboBox2.Value).Select
ufila = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(ufila, 1) = TextBox1
Cells(ufila, 2) = TextBox2
Cells(ufila, 0) = TextBox3
End If

De este código que problema tienes?

Estuve investigando un poco para trabajar con libros cerrados y es algo complicado, te dejo un ejemplo por si quieres seguir intentándolo

Public Function RecordSetFromSheet(sheetName As String)
Dim rst As New ADODB.Recordset
Dim cnx As New ADODB.Connection
Dim cmd As New ADODB.Command
'setup the connection
'[HDR=Yes] means the Field names are in the first row
With cnx
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source='" & ThisWorkbook.FullName & "'; " & "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"
.Open
End With
'setup the command
Set cmd.ActiveConnection = cnx
cmd.CommandType = adCmdText
cmd.CommandText = "SELECT * FROM [" & sheetName & "$]"
rst.CursorLocation = adUseClient
rst.CursorType = adOpenDynamic
rst.LockType = adLockOptimistic
'open the connection
rst.Open cmd
'disconnect the recordset
Set rst.ActiveConnection = Nothing
'cleanup
If CBool(cmd.State And adStateOpen) = True Then
Set cmd = Nothing
End If
If CBool(cnx.State And adStateOpen) = True Then cnx.Close
Set cnx = Nothing
'"return" the recordset object
Set RecordSetFromSheet = rst
End Function
Public Sub Test()
Dim rstData As ADODB.Recordset
Set rstData = RecordSetFromSheet("Sheet1")
Sheets("Sheet2").Range("A1").CopyFromRecordset rstData
End Sub

fuente:

http://www.todoexpertos.com/mitodoexpertos/question/ydxgi86uuc7js/formulario-con-2-combobox-y-guardar-datos-en-diferente-libro

Saludos. Dam

mil gracias por tu tiempo

te comento

si lo que quiero es guardar en dos libros pero con el código que tengo solo puedo visualizar y guardar en 1 solo libro

lo que quiero es al momento de que le de en el botón de guardar me lo guarde en los dos dos libros

te comento que si libro de excel que siempre ocupo se llama flujo

y tengo un botón que se llama formulario donde si yo le doy clck me abre el formulario y una ventana donde escojo el otro libro que se llama conceptos lo selecciono, se abre el otro libro y ahorasi en mi formulario en el combobox1 ya tengo las hojas del libro conceptos

y en el combobox2 todas las hojas del libro flujos

lo que no me sale es hacer que al darle guardar me lo guarde en los dos libros porque como abrí el deconceptos solo me lo guarda en conceptos y me marca un error lo que e analizado es que creo que le tengo que indicar el comando en el botón de guardar ruta de los dos libros (flujos Y conceptos) para que me lo guarde

y como le puedo hacer para que al momento de que me guarde los datos en los dos libros me cierre el libro de conceptos

es si esta es mi duda y mi prioridad espero me puedas echar la mano

saludos y muchas gracias

Intenta lo siguiente, para pasar los datos a cada libro
Cambia esta línea
Sheets(ComboBox1.Value).Select
Por esta
Workbooks(“conceptos”). Sheets(ComboBox1. Value).Select
Y más adelante, esta línea
Sheets(ComboBox2.Value).Select
Por esta
Workbooks(“flujos”). Sheets(ComboBox2. Value).Select
Y luego para guardar cada libro, tienes que hacer lo siguiente
Cambia esta línea
ActiveWorkbook. Save
Por estas
Workbooks(“conceptos”). Save
Workbooks(“flujos”). Save
Prueba y me comentas
Saludos. Dam
Si es lo que necesitas, podrías de favor, cerrar la pregunta.

$$\begin{align}&Private Sub CommandButton1_Click()\\ &'Guarda datos\\ &Call copia\\ &UserForm3.Hide\\ &\end Sub\\ &Sub copia()\\ &If ComboBox1 = "" Then\\ &    MsgBox "Seleccionar Empresa", vbCritical\\ &    ComboBox1.SetFocus\\ &       \\ &Else\\ &    Workbooks("conceptos").Sheets(ComboBox1.Value).Select\\ &    ufila = Range("A" & Rows.Count).\end(xlUp).Row + 1\\ &    Cells(ufila, 1) = TextBox1\\ &    Cells(ufila, 2) = TextBox3 + " " + ComboBox2\\ &    Cells(ufila, 8) = TextBox4\\ &    \\ &\end If\\ &\\ &\\ &        If ComboBox2 = "" Then\\ &            MsgBox "Seleccionar Empresa", vbCritical\\ &            ComboBox2.SetFocus\\ &        Else\\ &    Workbook("flujos").Sheets(ComboBox2.Value).Select\\ &            \\ &            ufila = Range("A" & Rows.Count).\end(xlUp).Row + 1\\ &            Cells(ufila, 1) = TextBox1\\ &            Cells(ufila, 2) = TextBox2\\ &            Cells(ufila, 0) = TextBox3\\ &            \\ &            \\ &            \\ &    \end If\\ &Call limpia\\ &\\ &\end Sub\\ &Private Sub CommandButton2_Click()\\ &    Call copia\\ &    Workbook("conceptos").Save\\ &    Workbook("flujos").Save\\ &    Call limpia\\ &        UserForm3.Hide\\ &        \\ &\end Sub\\ &\\ &Sub limpia()\\ &ComboBox1.Clear\\ &TextBox1 = ""\\ &TextBox3 = ""\\ &TextBox4 = ""\\ &\\ &\\ &\\ &\\ &\end Sub\end{align}$$

buen dia te comento

a un nome da el resultado que esperamos me marca un error

dice no se ha definido sub o function y me marca el la fila de workbook

solo me lo copia en 1 libro

saludos

sabrás a que se debe te mando el código de los botones ?

gracias

buen dia te mando mi código completo de mi formulario para ver si tu puedes encontrar el error por que hice los cambios y no me da probé con el código y los datos que me pasaste pero no y también le agregue e .lxls

a todos los workbooks y ni asi

lo provee de varias formas ójala y des con el error

saludos

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) '

valida que seleccionen una empresa

If ComboBox1 = "" Then

MsgBox "Seleccionar Por Lo menos un Servicio", vbCritical

ComboBox1.SetFocus Cancel = True

End If

End Sub

Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

'valida que seleccionen una empresa

If ComboBox2 = "" Then

MsgBox "Seleccionar Empresa o Numero de Cuenta", vbCritical

ComboBox2.SetFocus Cancel = True

End If

End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

'Valida formato de fecha en un textbox

On Error Resume Next

fechaentrada = TextBox1.Value

fecha = TextBox1.Value
If fecha = "" Then fecha = Date
For i = 1 To 10

If Mid(fecha, i, 1) = "/" Or Mid(fecha, i, 1) = "-" Or Mid(fecha, i, 1) = "." Then

fecha = Left(fecha, i - 1) & Mid(fecha, i + 1)

End If

Next
If Len(fecha) <> 8 Then
MsgBox "fecha invalida " & fechaentrada

Cancel = True
Else

fecha = Left(fecha, 2) & "/" & Mid(fecha, 3, 2) & "/" & Right(fecha, 4)

fecha = DateValue(fecha)

If Err.Number <> 0 Then

MsgBox "fecha invalida " & fechaentrada

Cancel = True

Else

TextBox1.Value = fecha

End If

End If
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

'Valida que sea número

If Not IsNumeric(TextBox2) Then

MsgBox "Capturar solo número valido", vbCritical

Cancel = True

End If
End Sub

Private Sub UserForm_Activate()

'Captura datos y guarda en empresa

ws_Count = ActiveWorkbook.Worksheets.Count

For i = 1 To ws_Count

With Me.ComboBox2

.AddItem Worksheets(i).Name

End With

Next

'para agregar otra lista desplegable

mio = ActiveWorkbook.Name

For Each hoja In ActiveWorkbook.Sheets

ComboBox2.AddItem hoja.Name

Next

MsgBox "carga el archivo que dice conceptos"""

archivo = Application.GetOpenFilename

If archivo = False Then Exit Sub

Workbooks.Open archivo

otro = ActiveWorkbook.Name

For Each hoja In ActiveWorkbook.Sheets

ComboBox1.AddItem hoja.Name

Next

End Sub

Private Sub CommandButton1_Click()

'Guarda datos

Call copia

UserForm3.Hide

End Sub

Sub copia()

If ComboBox1 = "" Then

MsgBox "Seleccionar Empresa", vbCritical

ComboBox1.SetFocus

Else

Workbooks("conceptos.xls").Sheets(ComboBox1.Value).Select

ufila = Range("A" & Rows.Count).End(xlUp).Row + 1

Cells(ufila, 1) = TextBox1

Cells(ufila, 2) = TextBox3 + " " + ComboBox2

Cells(ufila, 8) = TextBox4

End If
If ComboBox2 = "" Then

MsgBox "Seleccionar Empresa", vbCritical

ComboBox2.SetFocus

Else

Workbook("flujos.xls").Sheets(ComboBox2.Value).Select

ufila = Range("A" & Rows.Count).End(xlUp).Row + 1

Cells(ufila, 1) = TextBox1

Cells(ufila, 2) = TextBox2 C

ells(ufila, 0) = TextBox3

End If

Call limpia


End Sub

Private Sub CommandButton2_Click()

Call copia

Workbook("conceptos.xls").Save

Workbook("flujos.xls").Save

Call limpia

UserForm3.Hide

End Sub
Sub limpia()

ComboBox1.Clear

TextBox1 = ""

TextBox3 = "" T

extBox4 = ""

End Sub

Me puedes enviar el libro completo, para poder hacer pruebas.

Mi correo [email protected]
En el asunto escribe tu clave de usuario y el título de esta pregunta.

correcto mi estimado ya te lo mande

a tu correo te lo agradezco y ójala me puedas echar la mano

saludos

Te envié a tu correo la respuesta.

Saludos. Dam

Muchas gracias mi estimado si me abrió el archivo solo que no me guarda los datos en los dos libros de hecho no puedo guardar en ninguno de los dos ya le di la ruta pero creo que algo estoy haciendo mal espero me puedas decir que es lo que estoy asiendo mal

saludos

¿Me puedes explicar qué userform estás ocupando y qué datos pones?

Saludos. Dam

del libro que te mande tengo 3 formularios en el que guardo datos en los dos libros es el formulario 3 (se llama pago servicios )

ese es el que no me queda por que no puedo guardar en los dos libros si tu pudieras hacer las modificaciones y mandarme lo yo le cambio las rutas o trato de asiganrle las mismas rutas te lo agradecería

infinitamente saludos

Te envié a tu correo los dos archivos : conceptos y flujo, para que hagas tus pruebas. Ya graba en 2 archivos.

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas