programacion en visual basic.ayuda para importar de excel a excel

Iniciado por Railil, 11 Mayo 2006, 10:16 AM

0 Miembros y 1 Visitante están viendo este tema.

Railil

ante todo muy buenas gente del foro.
os comento mi problemilla: vereis tengo un par de documentos de word con el mismo formato(por ejemplo dni nombre y apellido)(pongamos q uno de los documentos es 2005 y el otro 2006) ahora bien tengo un tercero del q tengo q importar los datos a los otros dos, pero no de cualquier manera xq yo lo q quiero es conseguir q solo se pasen algunos de los datos  q coincidan con una variable comun q tienen(es decir el tercer documento consistiria en dni direccion y telefono y yo lo q querria es q para los dnis coincidentes copiara la direccion y el telefono en el segundo y/o el primero de los documentos)teneis alguna idea,alguien sabe como hacerlo??rogaria por favor q me respondierais lo antes posible ya que tengo un poquito de prisa ....gracias de antemano
saludos desd valencia...
PROVERBIO CHINO:
"si un hombre tiene hambre,no le des un pez,enseñale a pescar"

Railil

#1
el tema estaba en las macros y la programacion en visual basic
aqui dejo el codigo q consegui sacarme asi q si alguien ve alguna mejora o algun fallo x favor no dudeis en comunicarmelo...
bueno os replanteo el problema x si acaso....
tenemos varios documentos de excel,uno de ellos son las entradas q ha habido de un determinado material(columna h como "primary key" en todos ellos ademas es el dato comun q tienen las diferentes tablas)otro los materiales q hay en el alamcen y en este documento por degracia y por circunstancias ajenas no tenemos anotados los comentarios q si tenemos en entradas y queremos pasarlos a almacen.para esto hice una macro con dos botones y aqui dejo el codigo de ambos botones(uno es tomar datos(en entradas copio los comentarios) y el otro es insertar datos(en almacen inserto los comentarios))
el primero de ellos es:


Private Sub CommandButton1_Click()
Rem se traslada lo primero a la celda H2(nº de lote)
Range("H2").Select
Rem si no hay dato en H2 no debe entrar en el bucle
If ActiveCell = Empty Then GoTo salte
Rem abre archivo
Open "c:\datos.txt" For Output As 1
Rem activo etiqueta para volver
regresa:
Rem captura el lote
If ActiveCell.Offset(0, 2) <> Empty Then
     lote = ActiveCell
     Rem mueve dos columnas
     ActiveCell.Offset(0, 2).Select
     Rem captura observaciones
     obser = ActiveCell
     Rem escribe en archivo
     Write #1, lote, obser
     Rem retrocede dos columnas
     ActiveCell.Offset(0, -2).Select
End If
Rem baja un renglon
ActiveCell.Offset(1, 0).Select
Rem si la celda ESTA VACIA Q NO REGRESE
If ActiveCell = Empty Then GoTo salte
Rem regresa a escribir siguiente lote
GoTo regresa
salte:
Rem se acabo la copia y cierro archivo
Close #1
End Sub
y el segundo es:

Private Sub CommandButton2_Click()
Rem primero habria q ordenar el fixero por lote
Rem luego darle el formato deseado al fixero destino
Rem y luego situarnos en H2
Range("H2").Select
Rem abre arxivo para lectura
Open "c:\datos.txt" For Input As 1
Do While Not EOF(1)
Rem lee los datos
Input #1, lote, obser
salto2:
Rem comprueba q lote=lote si es diferente lo manda al final del programa sino sigue
If ActiveCell.FormulaR1C1 <> lote Then GoTo salto1
Rem muevo hasta observaciones
ActiveCell.Offset(0, 2).Select
Rem escribo
ActiveCell.FormulaR1C1 = obser
Rem vuelvo a la columna apropiada
ActiveCell.Offset(0, -2).Select
ActiveCell.Offset(1, 0).Select
GoTo salto3
Rem aqui llega el salto 1 y lo q llegue hasta la sentencia anterior
salto1:
ActiveCell.Offset(1, 0).Select
If ActiveCell.FormulaR1C1 <> Empty Then GoTo salto2
Rem ahora he de escribir una nueva linea(fila)con el elemento
Rem primero escribo el lote
ActiveCell.FormulaR1C1 = lote
Rem ahora me desplazo hasta la columna O
ActiveCell.Offset(0, 7).Select
Rem copio el valor de obser
ActiveCell.FormulaR1C1 = obser
Rem vuelvo a H2 para empezar con el siguiente ciclo
Range("H2").Select
Rem activa el ciclo do-while q regresa hasta q se cumpla la condicion
salto3:
Loop
Rem cierra el arxivo
Close #1
End Sub

bueno eso es todo,agradecere vuestras correcciones ciaooo,saludos desd valencia
PROVERBIO CHINO:
"si un hombre tiene hambre,no le des un pez,enseñale a pescar"

Railil

#2
ahora aunq ya esta resuelto me gustaria q me echarais una mano diciendome si se os ocurre como hacerlo en un solo command button por favor,es decir q un solo boton tome los datos de hoja1,los compare con hoja2, y realice las comparaciones pertinentes,y si ademas me dijerais como añadir datos en una hoja3,seria perfecto.como veis mi problema es q no se como programar en visual basic un cambio de hoja.... :-\,gracias...saludos desd valencia
PROVERBIO CHINO:
"si un hombre tiene hambre,no le des un pez,enseñale a pescar"