Macro de busqueda y sustitución con formula matricial

¿Podría hacerse con una sola macro obteniendo los parámetros de búsqueda y sustitución de una matriz?

La macro es la siguiente:

Sub tarjeta()

Dim oHojaActiva As Object

Dim oBuscarEn As Object

Dim lReemplazados As Long

Dim oRD As Object

oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()

oBuscarEn = oHojaActiva.getCellRangeByName( “$D$2:$D$51” )

’Creamos el descriptor de reemplazo

oRD = oHojaActiva.createReplaceDescriptor

’Texto a buscar

oRD.setSearchString( "TARJETA- " )

’Texto a reemplazar

oRD.setReplaceString( “” )

’El método devuelve el número de reemplazos que tuvieron éxito

lReemplazados = oBuscarEn.replaceAll( oRD )

End Sub

Las demás son iguales, cambia solo lo buscado y reemplazado.

los rangos de búsqueda y reemplazo serían los siguientes:

Existente Reemplazo
TARJETA- “”
RECIBO- “”
DB DEUTSCHE BANK
CAJA RURAL DE E CAJA R. EXTREMADURA

Estos serían algunos.

Tendría menos código y el añadir nuevos parámetros de búsqueda solo requiere ordenar la matriz y cambiar el rango de la misma en la macro.

Gracias y un saludo.

Suponiendo que los datos origen están en otra hoja y tienen los encabezados de fila.

image

Sub buscar_y_reemplazar()
	hoja_origen = "datos"
	celda_origen = "A1"
	
	doc = ThisComponent
	sheet = doc.CurrentController.ActiveSheet
	
	datos = obtener_datos(hoja_origen, celda_origen)
	
	busca_en = sheet.getCellRangeByName("D2:D51")
	rd = sheet.createReplaceDescriptor()
	
	For Each fila In datos
		rd.SearchString = fila(0)
		rd.ReplaceString = fila(1)
		busca_en.replaceAll(rd)
	Next

End Sub


Function obtener_datos(hoja_origen, celda_origen)
	doc = ThisComponent
	sheet = doc.Sheets.getByName(hoja_origen)
	celda = sheet.getCellRangeByName(celda_origen)
	cursor = sheet.createCursorByRange(celda)
	cursor.collapseToCurrentRegion()
	d = cursor.RangeAddress
	rango = sheet.getCellRangeByPosition(d.StartColumn, d.StartRow+1, d.EndColumn, d.EndRow)
	obtener_datos = rango.DataArray
End Function

Buenos días Mauricio.
Esta tarde lo miraré.
Muchas gracias y un saludo,

Funciona perfectamente.
Con eso he conseguido tener en una sola macro mas de 20 que tenía antes.
Es para preparar los datos que traigo del banco mediante un xls. e introducirlos en Base.
Gracias de nuevo y un saludo.