Macro de reemplazo en Math

Hola.
Soy recién llegado al foro. He estado buscando algún hilo relacionado con mi problema y no he encontrado.

Quiero hacer una macro para Math que sustituya automáticamente un carácter por otro en todas las fórmulas de un documento de Writer, ya que son documentos muy largos y con muchas fórmulas. He encontrado algo similar para cambiar las propiedades de todas las fórmulas de Math en un documento y me funciona bien, así que he grabado una macro reemplazando caracteres en Writer (no en Math) para mezclarlas y conseguir lo que quiero.

La macro para sustituir en Writer es ésta:

sub Masbonito2

dim document   as object
dim dispatcher as object
dim args1(21) as new com.sun.star.beans.PropertyValue

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.SearchFiltered"
args1(4).Value = false
args1(5).Name = "SearchItem.Backward"
args1(5).Value = false
args1(6).Name = "SearchItem.Pattern"
args1(6).Value = false
args1(7).Name = "SearchItem.Content"
args1(7).Value = false
args1(8).Name = "SearchItem.AsianOptions"
args1(8).Value = false
args1(9).Name = "SearchItem.AlgorithmType"
args1(9).Value = 0
args1(10).Name = "SearchItem.SearchFlags"
args1(10).Value = 65536
args1(11).Name = "SearchItem.SearchString"
args1(11).Value = "+"
args1(12).Name = "SearchItem.ReplaceString"
args1(12).Value = " %m "
args1(13).Name = "SearchItem.Locale"
args1(13).Value = 255
args1(14).Name = "SearchItem.ChangedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.DeletedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.InsertedChars"
args1(16).Value = 2
args1(17).Name = "SearchItem.TransliterateFlags"
args1(17).Value = 1073742848
args1(18).Name = "SearchItem.Command"
args1(18).Value = 3
args1(19).Name = "SearchItem.SearchFormatted"
args1(19).Value = false
args1(20).Name = "SearchItem.AlgorithmType2"
args1(20).Value = 1
args1(21).Name = "Quiet"
args1(21).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

end sub

La mezcla con la macro que me funciona en Math no es mucho más larga y el problema está en que no encuentro un objeto sobre el que ejecutar el comando executeDispatch del final. Pongo aquí la macro que me da problemas:

Sub MasBonito()
'Cambiar el carácter + normal por el bonito

Dim listaDeObjetosEmbebidos As Object
Dim listaDeNombres() As String 
Dim cadaObjeto As Object 
Dim contenidoFormula As Object ' el texto de la fórmula
Dim i as integer
Dim cambiador as Object
dim args1(21) as new com.sun.star.beans.PropertyValue

listaDeObjetosEmbebidos = ThisComponent.getEmbeddedObjects()
listaDeNombres = listaDeObjetosEmbebidos.getElementNames()
cambiador=createUnoService("com.sun.star.frame.DispatchHelper")
For i = 0 To UBound(listaDeNombres)
	cadaObjeto = listaDeObjetosEmbebidos.getByName(listaDeNombres(i)).Model 'cada objeto
	If (not isNull(cadaObjeto)) Then
		With cadaObjeto
			If .supportsService("com.sun.star.formula.FormulaProperties") Then 'si es una fórmula
			  contenidoFormula = listaDeObjetosEmbebidos.getByName(listaDeNombres(i)).EmbeddedObject
			  contenidoFormula.updateMode = com.sun.star.embed.EmbedUpdateModes.ALWAYS_UPDATE
			  args1(0).Name = "SearchItem.StyleFamily"
			  args1(0).Value = 2
			  args1(1).Name = "SearchItem.CellType"
			  args1(1).Value = 0
			  args1(2).Name = "SearchItem.RowDirection"
			  args1(2).Value = true
			  args1(3).Name = "SearchItem.AllTables"
			  args1(3).Value = false
			  args1(4).Name = "SearchItem.SearchFiltered"
			  args1(4).Value = false
			  args1(5).Name = "SearchItem.Backward"
			  args1(5).Value = false
			  args1(6).Name = "SearchItem.Pattern"
			  args1(6).Value = false
			  args1(7).Name = "SearchItem.Content"
			  args1(7).Value = false
			  args1(8).Name = "SearchItem.AsianOptions"
			  args1(8).Value = false
			  args1(9).Name = "SearchItem.AlgorithmType"
			  args1(9).Value = 0
			  args1(10).Name = "SearchItem.SearchFlags"
			  args1(10).Value = 65536
			  args1(11).Name = "SearchItem.SearchString"
			  args1(11).Value = "+"
			  args1(12).Name = "SearchItem.ReplaceString"
			  args1(12).Value = " %m "
			  args1(13).Name = "SearchItem.Locale"
			  args1(13).Value = 255
			  args1(14).Name = "SearchItem.ChangedChars"
			  args1(14).Value = 2
			  args1(15).Name = "SearchItem.DeletedChars"
			  args1(15).Value = 2
			  args1(16).Name = "SearchItem.InsertedChars"
			  args1(16).Value = 2
			  args1(17).Name = "SearchItem.TransliterateFlags"
			  args1(17).Value = 1073742848
			  args1(18).Name = "SearchItem.Command"
			  args1(18).Value = 3
			  args1(19).Name = "SearchItem.SearchFormatted"
			  args1(19).Value = false
			  args1(20).Name = "SearchItem.AlgorithmType2"
			  args1(20).Value = 1
			  args1(21).Name = "Quiet"
			  args1(21).Value = true
			  cambiador.executeDispatch(cadaObjeto, ".uno:ExecuteSearch", "", 0, args1())
			End If
		End With 
 	End If
Next i
ThisComponent.reformat()

End Sub

El problema lo tengo en la línea cambiador.executeDispatch(cadaObjeto, “.uno:ExecuteSearch”, “”, 0, args1()). El intérprete me dice esto:

Error de ejecución de BASIC.
Se ha producido una excepción
Type: com.sun.star.lang.IllegalArgumentException
Message: cannot coerce argument type during corereflection call:
arg no.: 0 expected: “com.sun.star.frame.XDispatchProvider” actual: “com.sun.star.frame.XModel”.

Algo así como que el objeto sobre el que pretendo ejecutar el despachador no es del tipo adecuado. Me pierdo del todo en la referencia de objetos.

¿Alguien puede ayudarme con esto?
Muchas gracias

Olvidé añadir la macro que funciona en Math. Tengo que aclarar que esta macro la llamo desde Writer y con ella cambio algunas propiedades de todas las fórmulas de Math incrustadas en el documento de Writer.

Sub CambiaFormulas()
'Quitar margen interno y más de todas las fórmulas de Math en el documento

Dim embeddedObjects As Object
Dim elementNames() As String 
Dim element As Object
Dim realElem As Object
Dim i as integer

embeddedObjects = ThisComponent.getEmbeddedObjects() ' lista de objetos
elementNames = embeddedObjects.getElementNames() 'nombres
For i = 0 To UBound(elementNames)
	element = embeddedObjects.getByName(elementNames(i)).Model
	If (not isNull(element)) Then
		With element  'cada objeto
			If .supportsService("com.sun.star.formula.FormulaProperties") Then
			  realElem = embeddedObjects.getByName(elementNames(i)).EmbeddedObject 'el objeto embebido
			  realElem.updateMode = com.sun.star.embed.EmbedUpdateModes.ALWAYS_UPDATE
			  .RightMargin = 0
			  .LeftMargin = 0
			  .BottomMargin = 0
			  .TopMargin = 0
			  .BaseFontHeight = 12
			  .RelativeLineSpacing = 30
			  .RelativeMatrixLineSpacing = 15
			  .RelativeMatrixColumnSpacing = 15
			  .RelativeFractionNumeratorHeight = 3
			  .RelativeFractionDenominatorDepth = 3
			  .RelativeRootSpacing = 3
			End If
		End With
 	End If
Next i
ThisComponent.reformat()

End Sub

Haya una diferencia importante: en esta macro no se ejecuta el dispatcher.

He pasado de las macros grabadas y del dispatcher y le he atacado directamente a las propiedades de cada objeto.
Estoy añadiendo algunas cosas más para que la macro sea más versátil y me está saliendo bastante bonita.