Visual Basic.NET - Detectar final de hoja en Excel

 
Vista:

Detectar final de hoja en Excel

Publicado por David (2 intervenciones) el 11/11/2009 14:00:09
Buenas tardes.

Estoy realizando una aplicación en VB.Net y debo leer los datos de una hoja Excel.

Leerlos no es ningún problema, el problema que me estoy encontrando es determinar el final de la hoja para interrumpir el bucle que lee esos datos.

La idea que tengo es que el programa detecte si es la última celda activa del documento (es decir, tratar de simular un CTRL+FIN) y que en caso de ser cierto, abandone el bucle, es decir, deje de buscar datos.

No me vale la idea de ver si la fila no contiene datos, ya que existen filas vacías en dicho documento que se limitan a separar trozos de información. El documento no guarda un formato estandarizado, por lo que la única opción que veo es conseguir detectar la última celda activa del Excel.

¿Alguna idea?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Detectar final de hoja en Excel

Publicado por JoanF (129 intervenciones) el 12/11/2009 06:12:44
Hola,

Si usas Office 2007, el objeto worksheet tiene el método UsedRange que te devuelve un objeto Range con el área usada del worksheet.

Sino, otra opción seria el método:

oSheet.Cells.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell)

Que te devuelve un rango con la ultima celda usada.

Espero que esto te sirva.

Otra opcion que trabajando con versiones de Excel antiguas y con documentos con filas en blanco, me funcionaba bastante bien es seguir fila por fila y considerar que el documento había terminado cuando encontraba un cierto numero de celdas en blanco. Seria algo así:

Dim contadorFila As Long = 1
Dim numeroEspaciosBlancosEncontrados As Integer = 0
Dim rangoAExaminar As Excel.Range
Dim hojaExcel As Excel.Worksheet

Do
rangoAExaminar = hojaExcel.Cells("A" & contadorFila)

If rangoAExaminar.Value = "" Then
numeroEspaciosBlancosEncontrados += 1
Else
'procesar la fila

'reseteo contador
numeroEspaciosBlancosEncontrados = 0
End If

Loop While numeroEspaciosBlancosEncontrados <= 200

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Detectar final de hoja en Excel

Publicado por David (2 intervenciones) el 12/11/2009 11:41:08
Muchísimas gracias Joan, eres un crack. La solución que me diste:

oSheet.Cells.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell)

es justo la que buscaba.

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar