Discussion:
Saber el ultimo registro con dato en excel
(demasiado antiguo para responder)
milhguer
2008-09-03 21:20:34 UTC
Permalink
Hola todos espero que me puedan ayudar...Un programa de x proveedor
exporta un archivo excel con una x cantidad de registros..que puede
ser 15 a 100 ó a 1000 registros como puedo saber desde visual
basic...la posicion del último registro con datos en una hoja de
calculo excel sin recorrer el excel.....es decir de a200= MMMMM
entonces el total de registros de hoja de excel es 200...

Porque solicito saber esto...pq desde visual basic ya levanta el excel
y recorre la hoja de calculo para validar ciertos datos..El problema
es que puse una caja de texto ingresa total de registros a
recorre..halli el usuario ingresa la cantidad de registros que va
validar el programa y este es problema para usuario que tiene que
entrar a excel y ver el ultimo registro que contiene el archivo
excel....

Espero su ayuda...gracias de antemano
Víctor Gómez
2008-09-03 21:35:48 UTC
Permalink
Hola milhguer,

Aquí te dejo un link que encontré... hay varios ejemplos...

http://www.cyta.com.ar/biblioteca/bddoc/bdlibros/modulos_vb/index.htm

Saludos y espero te sirva...
milhguer
2008-09-03 22:40:20 UTC
Permalink
Gracias Víctor Gómez voy revisar los ejemplos...
Ivan
2008-09-04 00:15:19 UTC
Permalink
hola,
Post by milhguer
Gracias Víctor Gómez voy revisar los ejemplos...
solo un comentario: por lo que me ha parecido ver en algunos ej. del
enlace, en concreto el de seleccionar el ultimo registro, el codigo se
dedica a activar y seleccionar tanto hojas, como celdas para trabajar
con ellas.

no he usado nunca VB6 'puro', pero supongo que sera igual que para
VBA(6). Si es asi, en general [y en este caso seguro] no es necesario
andar activando ni seleccionando nada para poder trabajar [u obtener
datos] con ello. Es mas, puede (y suele) ser bastante
contraproducente.

basta con que referencies adecuadamente los objetos sobre los que
quieras actuar.

pej, una vez abierto 'el excel' (le llamaremos xl), supon que tienes
una hoja llamada "TuHoja", y en ella tu lista comienza en la columna A
(y por supuesto el campo de la columna A es obligatorio, es decir, el
ultimo registro de la columna A se corresponde con el ultimo registro
de la lista <puede ser cualquier otra columna mientras lo adaptes>),
esto te devuelve el numero de la ultima fila con datos

dim UltF as long
with xl.worksheets("TuHoja")
UltF = .cells(.rows.count,1).end(xlup).row
end with

aunque si lo que quieres es el nº de registros deberias restarle el nº
de la fila de titulos, es decir, si estos estan en la fila 1, el nº de
registros realmente seria UltF - 1, si estan en la fila 13, seria UltF
- 13, etc

lo dicho, supongo que vb6 en general no obliga a activar ni
seleccionar nada (dede luego en vba no es necesario), y al hacerlo no
solo sueles ralentizar el proceso, sino que en el caso de excel
incluso te arriesgas a disparar algun evento, recalculo de formulas, y
alguna que otra cosa mas

espero auyude

un saludo
Ivan
Telerín
2008-09-04 09:41:07 UTC
Permalink
Selection.SpecialCells(xlCellTypeLastCell).Select
UltimaFila = ActiveCell.Row
Ivan
2008-09-04 10:13:14 UTC
Permalink
hola,
Post by Telerín
Selection.SpecialCells(xlCellTypeLastCell).Select
UltimaFila = ActiveCell.Row
buen ejemplo, aunque a riesgo de ser pesado, esto haria lo mismo
evitando cualquier tipo de (innecesaria) seleccion =>

xl.Worksheets("TuHoja").Cells.SpecialCells(xlCellTypeLastCell).row

un saludo
Ivan
Ivan
2008-09-04 15:51:25 UTC
Permalink
solo como añadido para 'navegantes' =>

[en el caso de excel al menos, <y creo que en general en la mayor
parte de aplicaciones que manipulan 'objetos', sea POO o cuasiPOO>] en
el ¿99?% de los casos no es necesario activar ni seleccionar nada para
manipular los objetos, ni para cambiar, obtener, formatear, etc su
posible contenido

y de hecho, una prueba de ello podria ser que en excel, en general, se
puede acceder a dichos objetos (es decir a sus propiedades, metodos,
etc) incluso aunque estos esten OCULTOS

aparte de los diversos riesgos y de poder enlentecer
considerablemente los procesos si andamos 'saltando' de hoja en hoja y/
o de celda en celda, a base de activaciones/selecciones,

un saludo
Ivan
milhguer
2008-09-04 21:37:43 UTC
Permalink
Ivan gracias por tu ayuda me servio de mucho
Telerín
2008-09-05 12:41:35 UTC
Permalink
Por supuesto. Lo importante es el "SpecialCells(xlCellTypeLastCell)", el
resto es de un código en el que era necesario la selección de la celda.
Loading...