Sv Community El Salvador
Soporte y Tecnología => Programación => VB => Mensaje iniciado por: ernestoelunico en agosto 29, 2008, 08:30:13 pm
-
Antes de empesar quiero disculparme no sabia el error que cometi al crear temas diferentes por que senti que no tenian relacion tambien agradesco aquellos que me an contestado y contribuido con su aporte.
Ok las preguntas estaran en cursiva ynumeradas tal vez asi le podemos entender por que ni yo entiendo las respuestas ni ustes las preguntas
Quiero pedirles por favor que debido a que este es un tema combinado si pueden citar a que pregunta se refieren cuando conteste que tiende por confundir a las personas :big_boss: y ami tambien gracias a todos y Que Dios los bendiga
Preguna 1
tengo 2 combobox y deseo que cuando elija un codigo del combo1 autimaticamente se me coloque una opcion en en el combo2
ejemplo el codigo de una cuenta es 11002, 11003, 11004 y digamos que en el combo box aparezca el nombre de la cuenta.........
Los datos son cargados desde un archivo de excel2003 alguna ayuda
este es el codigo que ocupo para cargarlo
Private Sub Form_Load()
'Variable de tipo Aplicación de Excel
Dim objExcel As Excel.Application
'Una variable de tipo Libro de Excel
Dim xLibro As Excel.Workbook
Dim Col As Integer, Fila As Integer
'creamos un nuevo objeto excel
Set objExcel = New Excel.Application
'Usamos el método open para abrir el archivo que está _
en el directorio del programa llamado archivo.xls
Set xLibro = objExcel.Workbooks.Open(App.Path + "\lb.xls")
'Hacemos el Excel Visible
objExcel.Visible = false
With xLibro
' Hacemos referencia a la Hoja
With .Sheets(1)
'Recorremos la fila desde la 1 hasta la 15
For Fila = 1 To 15
'Agregamos el valor de la fila que _
corresponde a la columna 1
Combo1.AddItem .Cells(Fila, 1)
Next
End With
End With
'Eliminamos los objetos si ya no los usamos
Set objExcel = Nothing
Set xLibro = Nothing
End Sub
Otro problema es que me empieza a crear procesos de excel en la compu y derrepende me saturo la memoria virtual porque tenia muchos procesos de excel abiertos no se porque no se cerraron.
Yo intente usar un text en vez del combo1 para ingresar el codigo
pero en si esto dara una mejor idea de lo que intento hacer
(http://lh3.ggpht.com/ERNESTOELUNICO/SLiwAriktmI/AAAAAAAAAFM/TN8pdhsCtHU/Dibujo.JPG)
yo meto el codigo de la cuenta principal en los text 6 y 7 y automaticamente me salen las cuentas en los combo 1 y combo3 y aparecen todas las subcuentas relacionadas a las cuentas en el combo 2 y combo 4
mi catalogo lo tengo digitado en excel en la primera columna estan los codigos y en la segunda las cuentas.
-
Primero te aconsejo que si vas a estar accesando al archivo de Excel de forma continua en tu programa, entonces mejor crea el objeto Excel.Application al iniciar el programa e igualmente inicialo al mismo tiempo que lo declaras.
Dim objExcel As New Excel.Application
Así ya no tenes que hacer posteriormente esto:
Set objExcel = New Excel.Application
Y pues obviamente tambien desecha el objeto hasta terminar la aplicación.
Otra cosa, con respecto a que te quedan procesos de Excel abiertos es porque no estas cerrando el documento antes de desechar el objeto.
Lo mas correcto seria:
objExcel.Workbooks.Close
Set objExcel = Nothing
Set xLibro = Nothing
Ahora bien, con tu pregunta:
Cuando uno hace clic en un elemento de un combobox se dispara el vento _click y en ese momento podes determinar que escogio el usuario con la propiedad .text del combobox.
Ahora bien, con ese valor (el codigo) tendrias que recorrer la tabla de Excel hasta encontrar ese codigo y luego desplazarte a la columna con el nombre de la cuenta y obtenerlo.
Espero haber comprendido tu pregunta, e igual si te sirve de sugerencia te recomiendo altamente usar una base de datos en lugar de tablas de Excel (inclusive las JET de MS Access serían utiles).
-
[Tema Combinado]
Estimado ernestoelunico por favor utilizar este tema para plantear todas tus dudas, estaremos gustosos de colaborarte pero deseamos que nos colabores manteniendo el foro en orden
Saludos.
-
Juela yo m perdi y no entendi :shock: unos preguntaban algo despues otra cosa jajajaj m perdi! :wacko: Bueno pero creo q ya les solucionanron!
-
No, es que cuando los combinaron se destruyo el tema :phew:
-
No, es que cuando los combinaron se destruyo el tema :phew:
Si vs, es q yo lo empec a leer asi desde el inicio y fue alli donde m perdi q ya no entendi q es lo q pedian vs! jajajaj!
-
Juela yo m perdi y no entendi :shock: unos preguntaban algo despues otra cosa jajajaj m perdi! :wacko: Bueno pero creo q ya les solucionanron!
No no han solucionados ciertas preguntas tratare de editar y mascar cuales sonlas pregunta ok revisen por favor
-
Se han separado nuevamente las preguntas, revisalas, todas estan en el subforo de Visual Basic 6.
-
Por lo menos trabajando en macros desde excel yo hago lo siguiente:
Cada vez que se modifica el valor de Combo1 pongo que se ejecute la siguiente linea:
Combo2.Value = Cells(Combo1.ListIndex + 1, 2)
Le sumo 1 a Combo1.ListIndex porque el primer valor de posición es 'cero'
Lo anterior funciona suponiendo que los valores en la tabla de excel esten en las siguientes posiciones:
(http://img179.imageshack.us/img179/1773/dibujosu9.th.jpg) (http://img179.imageshack.us/my.php?image=dibujosu9.jpg)(http://img179.imageshack.us/images/thpix.gif) (http://g.imageshack.us/thpix.php)
-
Vaia antes d iniciar a contestart quiero saber si estas trabajando con Macros en excel o con VB 6.0??
-
Se han separado nuevamente las preguntas, revisalas, todas estan en el subforo de Visual Basic 6.
Muchas gracias :drinks: ya se me estaban confundiendo los communiters :angel:
-
objExcel.Workbooks.Close
Set objExcel = Nothing
Set xLibro = Nothing
hey vlad hace tiempo me diste este codigo si me funcion pero pasa algo
cambie la forma estructura del codigo por que la ocupe para otra cosa pero fijate que esto lo meti en un boton comando
el cual aparte de cerrar el proceso de excel tambien cierra el pograma pero lo que pasa es que si uso el boton x de la venta no me cierra el proceso de excel simpre me lo deja abierto???? :phew:
-
La "X" no va a limpiar por vos los objetos que usaste.
En el evento unload del formulario dispara el cierre y la destruccion del objeto Excel. Si ya tenes el procedimiento en un command button, digamos, cmdCerrarConexion, entonces podes poner en el unload:
call cmdCerrarConexion_Click
O bien hacer un pequeño sub que contenga el codigo de cierre de excel y llamarlo desde donde se necesite.
-
no no funciono no cierra el proceso de excel si que abierto
Private Sub Form_Unload(Cancel As Integer)
Call cmdsalir_Click
End Sub
Private Sub Cmndsalir_Click()
Set objExcel = Nothing
Set xLibro = Nothing
End
End Sub
-
una pregunta mas que pasaria si el archivo tubera una contraseña como tengo que modificar el codigo
-
no no funciono no cierra el proceso de excel si que abierto
Private Sub Form_Unload(Cancel As Integer)
Call cmdsalir_Click
End Sub
Private Sub Cmndsalir_Click()
Set objExcel = Nothing
Set xLibro = Nothing
End
End Sub
Ahi falta el objExcel.Workbooks.Close; otra cosa, te has fijado que tu botón se llama Cmndsalir y no cmdsalir?
una pregunta mas que pasaria si el archivo tubera una contraseña como tengo que modificar el codigo
umm ahi si no se, pero mira esto:
http://www.ozgrid.com/VBA/excel-worksheet-protect-all.htm
Así que (como siempre no tengo VB a estas horas), pero mi aproximación sería que probaras con xLibro.unprotect ("Clave")
-
no quiero abrir otro tema por eso pongo esto por aqui para darle contunuidad :phew:
si yo uso
private sub cmdactulizar_click()
Call Form_Load
end sub
deberia de recargarme el formulario o me equipoco mejor dicho deberia de recargar la informacion que hay en el procedimiento
private sub Rorm_load()
...
end sub
pero no lo hace porque o mejor uso
load form1 :sorry:
-
no quiero abrir otro tema por eso pongo esto por aqui para darle contunuidad :phew:
si yo uso
private sub cmdactulizar_click()
Call Form_Load
end sub
deberia de recargarme el formulario o me equipoco mejor dicho deberia de recargar la informacion que hay en el procedimiento
private sub Rorm_load()
...
end sub
pero no lo hace porque o mejor uso
load form1 :sorry:
Call Form_Load, debería de llamar el código que haya form_load (ojo (!) no recarga el formulario).
Pero si tenes un procedimiento que tenes que ejecutar varias veces mejor move el codigo a un procedimiento en un modulo.
-
no la cosa era que para activar otros botones tiene que leer un archivo si en el archivo tiene una frace se activan si no la tiene no se actican y estas instrucciones estan en el form1._load
pero ya lo resolvi aunque lo siento un poco rustico pero hice esto en vez del call
Unload Frmhome
Load Frmhome
Frmhome.Show
le ventana se me mueve de la posicion original pero por lomenos ya hace lo que quiero
-
Igual, ¿no veo cual es la limitante de mover el codigo de form_load a un procedimiento en un modulo aparte?.
Asi digamos:
Modulo1:
Public Sub MiProcedimiento
'Codigo que lee los archivos y activa los botones y lo demas.
End Sub
Form1:
Private sub Form_Load
MiProcedimiento 'Se ejecuta "MiProcedimiento" al iniciar el formulario.
End Sub
Form1 :: cmdactulizar:
Private Sub cmdactulizar_click
MiProcedimiento 'Se ejecuta "MiProcedimiento" al darle clic en actualizar.
End Sub