dim args1(2) as new com.sun.star.beans.PropertyValue
'Le avisamos a Calc con la instrucción "dim" que utilizaremos una variable llamada args1
'Dicha variable contará con "tres lugares" para almacenar datos y tendrá una estructura similar a:
'args1(0).Name = "SearchItem.SearchString"
'args1(0).Value = "EDGAR FRANCISCO SOTO"
'args1(1).Name = "By"
'args1(1).Value = 1
'args1(2).Name = "Sel"
'args1(2).Value = false
'Lo anterior será explicado lineas abajo
document = ThisComponent.CurrentController.Frame
'A partir de este momento el archivo activo se llamará "document"
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
'A partir de este momento la "persona" que nos ayudará y buscara los datos se llamará "dispatcher"
args1(1).Name = "By"
args1(1).Value = 1
args1(2).Name = "Sel"
args1(2).Value = false
'By y 1 significarían "muevete un paso"
'By y 2 por ejemplo significarian "muevete dos pasos"
'Sel y false, si "muevete un paso" a la derecha estando en A10 llegarias a B10
'Sel y true, si muevete un paso a la derecha estando en A10 obtendriamos A10:B10
tDoc = ThisComponent.CurrentController
'A partir de este momento el "controlador" se llamará "tDoc", esta linea es necesaria porque es la "ruta" para llegar a la hoja activa
oSheet = tDoc.ActiveSheet
'A partir de este momento la hoja activa se llamará "oSheet" (Hoja desde la cual se ejecuta la macro)
tDoc.Select(oSheet.GetCellRangeByName("A1"))
'Seleccionamos la celda A1 para que desde ahi se iniciel la busqueda
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
'Esta instruccion equivale a pulsar la tecla "flecha izquierda" y utiliza:
'args1(1).Name = "By"
'args1(1).Value = 1
'args1(2).Name = "Sel"
'args1(2).Value = false
Edgar = ThisComponent.Sheets.GetByName("edgar")
'A partir de este momento la hoja edgar se llamará Edgar
args1(0).Name = "SearchItem.SearchString"
args1(0).Value = "EDGAR FRANCISCO SOTO"
'Lo que vamos a buscar
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
'Lo buscamos, mira args1, aqui el cursor se desplaza a donde esta "EDGAR FRANCISCO SOTO"
'Obvio si lo encuentra.
inicio = (ThisComponent.GetCurrentSelection.CellAddress.Row + 1)
'La celda donde se encuentra "EDGAR FRANCISCO SOTO" se llamará "inicio"
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
'Esta instruccion equivale a pulsar la tecla "flecha izquierda"
lo 6.2.0 | aoo 4.1.6 | win 7/10 ¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
uchale!!! ya se me había olvidado.
No es mi fuerte documentar macros, me da muchísima flojera, créeme que hecho un esfuerzo supremo.
Espero que con esto se entienda.
'Cuando la macro encuentra el rotulo "EDGAR FRANCISCO SOTO" el indicador de celda
'se desplaza a la celda que contiene dicho rotulo, que en este caso ya dijimos
'es la celda "inicio"'y que está en la columna B,
'por eso es necesario pulsar el equivalente a la
'tecla flecha izquierda para desplazarmos a la columna A
'en donde esta el codigo A802
dato = ThisComponent.GetCurrentSelection.String
'A802 lo almacenamos en la variable dato
args1(0).Value = Trim(dato)
'Si dato tuviera espacios en blanco Trim los elimina para dejar totalmente puro el texto A802
'y que no pudiera quedar por ejemplo A802_espacio_espacio_espacio
'Ahora vamos a buscar hacia abajo A802
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
'lo buscamos y nos desplazamos a donde este A802 otra vez
fin = (ThisComponent.GetCurrentSelection.CellAddress.Row + 1)
'Determinamos en que fila esta A802 nuevamente
rango = oSheet.GetCellRangeByName("A"+inicio+":K"+fin)
'Aqui determinamos todo el rectangulo o rango desde inicio hasta fin
'es decir todo el rango de datos de Edgar
tDoc.Select(Rango)
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
tDoc.Select(Edgar.GetCellRangeByName("A1"))
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
tDoc.Select(oSheet.GetCellRangeByName("A1"))
'Seleccionamos el rango y lo copiamos a donde deba ser. nota la hoja Edgar
args1(0).Name = "SearchItem.SearchString"
args1(0).Value = "EDGAR FRANCISCO SOTO"
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
MsgBox "Hecho"
lo 6.2.0 | aoo 4.1.6 | win 7/10 ¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!