Um problema talvez seja que Proceed
do loop em Convert_Headings_to_Title_Case
nunca seja alterado. Talvez você pretendesse escrever Heading_findNext
como uma Função em vez de um Sub e retornar um valor booleano como Proceed = Heading_findNext()
.
Além disso, certifique-se de iniciar o cursor de visualização no início do documento.
Aqui está o código de trabalho correto.
Sub Convert_Headings_to_Title_Case
Dim oDoc, oFrame, dispatcher As Object
Dim oVC, oCurs As Object
Dim sStyleNamePart As String
oDoc = ThisComponent
oFrame = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oVC = oDoc.CurrentController.getViewCursor()
oVC.gotoStart(False)
oCurs = oVC.getText().createTextCursorByRange(oVC)
While oCurs.gotoNextParagraph(False)
sStyleNamePart = Mid(oCurs.ParaStyleName, 1, 2)
If sStyleNamePart = "_H" Or sStyleNamePart = "He" Then
oVC.gotoRange(oCurs, False)
dispatcher.executeDispatch(oFrame, ".uno:EndOfLineSel", "", 0, Array())
dispatcher.executeDispatch(_
oFrame, ".uno:ChangeCaseToTitleCase", "", 0, Array())
End If
Wend
End Sub