Возможно, одна проблема заключается в том, Proceed
что цикл Convert_Headings_to_Title_Case
никогда не меняется. Возможно, вы намеревались написать Heading_findNext
как функцию, а не как Sub, и вернуть логическое значение наподобие Proceed = Heading_findNext()
.
Кроме того, обязательно запустите курсор просмотра в начале документа.
Вот правильный рабочий код.
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