Tengo un libro que con un botón con el que importo una base de datos en html, creando una hoja nueva con el nombre del html.
Esta base de datos (html), es muy variable en cantidad de datos, y su extructura de "celdas" (columnas y filas) es diferente en cada caso.
Si sucede que debajo del encabezado de cada columna de la tabla, aparecen los datos que hace referencia su encabezado.
Genero un script de búsqueda del nombre de encabezado (que SI es común en todas las ocasiones de importar los datos de html) y indico que baje una celda abajo que es donde está el primer dato que me interesa.
Bien, pues ahora -y és lo que ya no sé como hacer- quiero que se seleccione todos los datos hasta la última fila de la columna, menos la primera celda en blanco.
¿Podeis ayudarme?...no tenemos de inicio un nombre de hoja ni de celda en la que establecer un punto de selección, sólo las búsquedas de navegación para la importación de datos y la búsqueda del nombre del encabezado de la lista que pretendo seleccionar.
Gracias.
Supongamos que la celda primera es TuCelda
con el teclado puedes ir a la última celda hacia abajo con datos pulsando [Fin][flecha abajo]
en VBA esto se puede hacer con el método .End de tu celda. este método tiene como argumentos xldown, xlUp, xltoRight, xltoLeft, que serían como las flechas abajo, arriba, derecha e izquierda
es decir, la última celda hacia abajo con datos sería
TuCelda.End xlDown
El rango desde la primera a la última sería
Range(TuCelda, TuCelda.End(xlDown))
------
Ya sé Excel, pero necesito más.
desde la complejidad de la búsqueda (te adjunto desde un inicio como procedo en la importación del html y la búsqueda siguiente), una vez llegada a una celda "X" (aleatória según sea el distinto html), me situaré bajo un título de columna en una celda "x" de coordenadas (letra:número) desconocido. Sólo llego trás la búsqueda.
For Each sheet In Workbooks(fileName).Worksheets
Workbooks(fileName).Worksheets(1).Copy After:=Workbooks("PROVA2").Sheets(1)
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.RowHeight = 33.75
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
Range("A1").Select
Workbooks(fileName).Activate
Workbooks(fileName).Close
Application.ScreenUpdating = True
MsgBox "Hoja copiada"
Next sheet
Range("A:A").Select
Range("A1").Activate
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("B:H").Select
Selection.Delete Shift:=xlToLeft
Columns("B:I").Hyperlinks.Delete
Cells.Select
Selection.Font.Size = 10
Columns("c:I").Columns.AutoFit
Range("A1").Select
Cells.Find(What:="Programs Name", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(1, 0).Select
End If
End With
Bien, puede que ahora sea más gráfico y se me pueda entender donde me encuentro perdido.
Ahora, y desde este punto (NO CONOCIDO) he de seleccionar los datos de las celdas en la columna en la que me encuentro, y hasta la celda vacia.
Puede que deba -y no sé como- de identificar la celda (letra:número) en la que he quedado, y establecerla como el punto que precisa la instrucción que me ha ofrecido.
Gracias.
En realidad esa celda sí que es conocida, es la celda activa, la activas tú con esta instrucción
ActiveCell.Offset(1, 0).Select
Es decir, que lo que yo llamé "TuCelda" en tu caso es la celda activa, ActiveCell.
Entonces para seleccionar desde la celda activa hacia abajo lo puedes hacer así (justo a continuación de la instrucción anterior):
Range(ActiveCell, ActiveCell.End(xlDown)).Select
------
Ya sé Excel, pero necesito más.
Muchísimas gracias. Es justo lo que preciso y no apreciaba.