Hola amigo: Espero que me puedas ayudar con mi problema. Yo trabajo con correspondencia y las ingreso mediante lector laser a un formulario con un textbox y aceptar para que vaya a una celda por, el asunto es que me envían las bases de datos en una hoja excel y quiero que en el formulario al ingresar el código de la carta me aparezca en algún lugar otro textbox o algo similar los datos de aquella ejemplo
textbox1 = código carta 123456 "ingreso mediante lector laser" textbox2 o algo similar = nombre o domicilio del cliente - calle juanito 2525 textbox3 = comuna o ciudad - Buenos Aires Se agradecería tu respuesta!
1 respuesta
Respuesta de neicos
1
1
neicos, Analista de sistemas y Programador en: Basic,c,c++,visual...
A ver si he entendido bien. ¿Usted posee una base de datos hecha en Excel con la información de su correspondencia no es así? Hay columnas de nombres y apellidos, códigos postales, direcciones etc. Lo que no entiendo es lo del código de carta, ¿es cómo si fuera un nº de series que apunta solo a una dirección o zona o persona? ¿Qué supuestamente están en la base de datos excel? ¿La base de datos en Excel va cambiando cada vez? O es como si dijéramos una tabla de referencia que no tiene cambios.
El código de la carta es el numero en barras que identifica a la carta que lo tiene solo una persona que se ingresa mediante un lector laser y la base de datos de excel no tiene cambios. Y con este código ingreso los documentos que lo hace el botón ACEPTAR: Private Sub CommandButton3_Click() If keyascii = 13 Then Control.SetFocus End If If TextBox1.Text <> "" Then Range("b8").Select Selection.EntireRow.Insert Range("b8").Select ActiveCell.Value = Val(TextBox1) TextBox1 = Empty Else MsgBox "Ingrese un Código de Barra" End If TextBox1.SetFocus End Sub __________________________________________ Private Sub CommandButton4_Click() UserForm1.Hide End Sub
¿El botón aceptar donde se encuentra? ¿En un Formulario en el libro de la base de datos? La base de datos puedes modificarla, es decir, puedes agregarles hojas nuevas, ¿o habría que trabajar desde otro libro diferente?
El botón aceptar esta en el formulario que se encuentra en un libro, y la base de datos es de una hoja de otro libro y solo se le va agregando datos no se les modifica.
No sabia bien como meterle mano sin saber las columnas concretas que le hacían falta, pero al final he encontrado el método. Si no entiende bien el funcionamiento, vuelvame a responder y se lo intentaré explicar mejor. El funcionamiento de la función es el siguiente: Nada más inicializar el programa le va a pedir que seleccione el archivo excel de la base de datos para abrirlo. No lo debe cerrar. Pretendo que le ponga una llamada en su función donde inserta los datos y le agregue un par de líneas a su códgo, su código quedaría como a continuación: Private Sub CommandButton3_Click() If keyascii = 13 Then Control.SetFocus End If If TextBox1.Text <> "" Then call comprueba() 'llama a la función que hemos creado ThisWorkbook. Worksheets("hoja1"). Activate 'activa la hoja para escribir, aqui tienes que poner donde pone hoja1 el nombre de la 'hoja donde insertas los datos. Range("b8").Select Selection.EntireRow.Insert Range("b8").Select ActiveCell.Value = Val(TextBox1) TextBox1 = Empty Else MsgBox "Ingrese un Código de Barra" End If TextBox1.SetFocus End Sub Tienes que poner antes de cualquier código para hacerlo público a todas las funciones, lo siguiente: Dim strRutaArchivo, strNombre As String Dentro del Form_load() poner esto: 'un poco de información MsgBox ("Abra la base de datos en archivo Excel.") 'elegir archivo strRutaArchivo = Application.GetOpenFilename() 'Application.GetOpenFilename("Libro de Microsoft Excel (*.xlsx),*.xlsx") Workbooks.Open Filename:=strRutaArchivo strNombre = ActiveSheet.Parent.Name A continuación la función que hace las comparaciones: Sub comprueba() Dim codcarta, nombre_hoja, columna_usuario, columna_direccion, columna_ciudad, columna_pais As String Dim celda, encontrado As Integer celda = 1 'numero de fila por la que empieza a buscar encontrado = 0 nombre_hoja = "hoja1" 'nombre de la hoja donde esta la BD codcarta = "B" 'Columna del codigo de barras que identifica al usuario en la BD, es donde va a buscar la función columna_usuario = "C" 'Columna donde estan los nombres de los cliemtes columna_direccion = "D" 'Columna donde estan las direcciones columna_ciudad = "E" 'Columna de la ciudad del cliente columna_pais = "F" 'Columna del pais del cliente Application.Workbooks(strNombre).Worksheets(nombre_hoja).Activate Do vari = Application.Workbooks(strNombre).Worksheets(nombre_hoja).Application.Cells(celda).Columns(codcarta).Value If vari = textbox1.Text Then encontrado = 1 'escribimos en el textbox2.text el nombre del cliente. textbox2.Text = Application.Workbooks(strNombre).Worksheets(nombre_hoja).Application.Cells(celda).Columns(columna_usuario).Value 'le añadimos a textbox2.text la direccion del cliente. textbox2.Text = textbox2.Text + "-" + Application.Workbooks(strNombre).Worksheets(nombre_hoja).Application.Cells(celda).Columns(columna_direccion).Value 'escribimos en textbox3.text la ciudad del cliente textbox3.Text = Application.Workbooks(strNombre).Worksheets(nombre_hoja).Application.Cells(celda).Columns(columna_ciudad).Value 'le añadimos a textbox3.text el pais del cliente. textbox3.Text = textbox3.Text + "-" + Application.Workbooks(strNombre).Worksheets(nombre_hoja).Application.Cells(celda).Columns(columna_pais).Value Exit Do End If celda = celda + 1 Loop While vari <> "" If encontrado = 0 Then MsgBox "No se han encontrado resultados" End If End Sub He creado unas variables, que en función de las columnas que te hagan falta, las modifiques, están explicadas a su lado, otro dato es la hoja de excel donde está alojada la Base de datos, tiene que escribirla donde pone hoja1, también está explicado. Los resultados que encuentra te los rellena en el textbox2 y el textbox3, también está explicado. En el caso de que no encuentre nada muestra un letrero de que no ha encontrado resultados. Espero que te haya servido. Ya me contaras