ARRGGGHHHH!!!!!!

26/10/2005 - 05:36 por sammuel.garcia | Informe spam
hola a todos!

estoy intentando:

12955 filas 62218 filas
archivo1 archivo2
codigo1 descrip cantidad... codigook descripcion existencia
...
xq31000 cerveza 1 xq31000 cerveza 1
pow5598 tarros 1 pow5598
.
.
.
la idea a grandes detalles es:
1. tomar codigo1 de archivo1 y buscarlo en archivo2
2. si lo encuentro, pegar de archivo1 los datos de descrip y cantidad
en archivo2 descripcion, existencia
3. si no lo encuentro, poner leyenda en archivo2 NO ENCONTRADO en
columnas descripcion y existencia
4. continuar asi hasta finalizar el contenido de archivo1

mi intención:
crear una macro, colocando un boton de comando y colocarle el codigo
siguiente:


Private Sub CommandButton1_Click()
Set mybook = Workbooks.Open(Filename:="archivo2.xls")
'archivo1 ya lo tengo abierto
For Each r In Worksheets("archivo1").Range("A8:a12955").Cells
=BUSCARH(A8:A12955,'[archivo2.xls]62617'!$A$2:$A$62618,1)
Next r
mybook.Close
End Sub

y me dice que no existe función buscarh...
despues de navegar por cientos de sitios buscando el motivo, me
encuentro conque con no es posible usar las funciones de excel en
vb!!!!! QUE???!!! mis neuronas casi se suicidan al enterarse de
esto!!!! arrggghhhh!!!! joder! que debo hacer entonces, reprogramar la
función????

por favor, tios, sé que hay geniecillos de excel, alguno, por favor,
por favor, digame que haceerrr¡¡
puedo salir de este enredo exportando dichas información a una tabla
de fox y remediar el asunto con un programa que puedo diseñar, pero
quiero saber si efectivamente no es posible hacerlo con macros.
mientras voy a consolar a mis probres neuronas con un par de cervezas
en tanto decido que hacer, y espero que alguna alma caritativa ilumine
mi camino, vale?

saludos!
 

Leer las respuestas

#1 Héctor Miguel
26/10/2005 - 06:51 | Informe spam
hola, sammuel !

12955 filas 62218 filas
archivo1 archivo2
codigo1 descrip cantidad... codigook descripcion existencia
xq31000 cerveza 1 xq31000 cerveza 1
pow5598 tarros 1 pow5598
la idea a grandes detalles es:
1. tomar codigo1 de archivo1 y buscarlo en archivo2
2. si lo encuentro, pegar de archivo1 los datos de descrip y cantidad en archivo2 descripcion, existencia
3. si no lo encuentro, poner leyenda en archivo2 NO ENCONTRADO en columnas descripcion y existencia
4. continuar asi hasta finalizar el contenido de archivo1
mi intención: crear una macro, colocando un boton de comando y colocarle el codigo siguiente:
Private Sub CommandButton1_Click()
Set mybook = Workbooks.Open(Filename:="archivo2.xls")
'archivo1 ya lo tengo abierto
For Each r In Worksheets("archivo1").Range("A8:a12955").Cells
=BUSCARH(A8:A12955,'[archivo2.xls]62617'!$A$2:$A$62618,1)
Next r
mybook.Close
End Sub
... [mas 'rollo'] ... :D



[parece que] existe una 'mezcla' de necesidades que no estan siendo 'compatibles' con la forma de usar codigos :(

1) lo unico que 'veo' poco probable de lograr... es poner 'no encontrado' en archivo2.xls
si cada hoja de excel 'dispone' de -solo- 65536 filas o renglones y ya tienes utilizadas 62618...
solo restan 3318... si de los 12995 articulos 'a buscar' no se encuentran 3319...donde pones los faltantes ???
[estoy poniendo la leyenda en el archivo1.xls junto al articulo que no se encontro en archivo2.xls] :))

2) no se de donde obtuviste que no se pueden usar las funciones de hoja de calculo en vba ???
lo que sucede es que no se pueden 'usar' en la forma que pretendes :-(

3) [ademas] para el caso que expones... existen otras alternativas -igualmente- 'funcionales' ;)
te paso al final un ejemplo de una de ellas [entre otras tantas posibilidades]...

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim Buscando As Range, Encontrado As Range, Col As Byte
Workbooks.Open "archivo2.xls"
For Each Buscando In ThisWorkbook.Worksheets("hoja1").Range("a8:a12955")
On Error Resume Next
With ActiveWorkbook.Worksheets("hoja1").Range("a2:a62618")
Set Encontrado = .Find(What:=Buscando, LookIn:=xlValues, After:=.Cells(1))
End With
On Error GoTo 0
If Not Encontrado Is Nothing Then
For Col = 1 To 2
Encontrado.Offset(, Col) = Buscando.Offset(, Col)
Next
Else
Buscando.Offset(, 3) = "No encontrado"
End If
Next
Set Encontrado = Nothing
Workbooks("archivo2.xls").Close True
End Sub

Preguntas similares