Información de documentos

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
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas