Já precisei em diversas situações de macros no Writer para Localizar e substituir. Vou colocar um exemplo abaixo, mas pode ser utilizar em qualquer situação semelhante.
Sub porExtenso
oDoc = thisComponent
Localizar = Array("0","1","2","3","4","5","6","7","8","9")
Substituir = Array("zero","um","dois","três","quatro","cinco","seis","sete","oito","nove")
Contagem = 0
FandR = oDoc.createReplaceDescriptor
FandR.SearchCaseSensitive = true
FandR.SearchRegularExpression = true
While Contagem <= uBound(Localizar)
FandR.setSearchString(aFind(Contagem))
FandR.setReplaceString(aReplace(Contagem))
Contagem = Contagem + 1
oDoc.ReplaceAll(FandR)
Wend
End Sub
oDoc = thisComponent
Localizar = Array("0","1","2","3","4","5","6","7","8","9")
Substituir = Array("zero","um","dois","três","quatro","cinco","seis","sete","oito","nove")
Contagem = 0
FandR = oDoc.createReplaceDescriptor
FandR.SearchCaseSensitive = true
FandR.SearchRegularExpression = true
While Contagem <= uBound(Localizar)
FandR.setSearchString(aFind(Contagem))
FandR.setReplaceString(aReplace(Contagem))
Contagem = Contagem + 1
oDoc.ReplaceAll(FandR)
Wend
End Sub
A macro acima substitui números pela sua forma extensa. É apenas um exemplo. Se você quiser, pode substituir à sua maneira, obedecendo à seguinte regra: os caracteres (ou palavras inteiras) a Localizar/Find devem ser inclusos dentro de 'Localizar = Array("")'. Os caracteres a Substituir/Replace, na linha de baixo. Evidentemente, o número de elementos do vetor de cima deve ser igual ao do debaixo, pois a substituição será feita na ordem: o primeiro elemento de Localizar será trocado pelo primeiro elemento de Substituir.
Lidar com macros não é tão trivial, assim, esta postagem é bastante específica. Não tenho a intenção, a priori, de explicar mais sobre como adicionar uma macro ao Writer, a não ser que seja solicitado. O que está aí é uma macro base, que espero que seja útil.
Fonte: http://user.services.openoffice.org/en/forum/viewtopic.php?f=21&t=2437
Fonte: http://user.services.openoffice.org/en/forum/viewtopic.php?f=21&t=2437