次の見出し段落を見つけ、それをタイトルケースに変換するLibreOffice Writerマクロを持っています。現在、ファイルの最後に到達するまで繰り返し呼び出す必要があります。私はすべてを実行するループを設定しようとしていますが、EOFで停止します。しかし、ループは機能していません。
任意の助けをいただければ幸いです。これが私が持っているものです。
sub Convert_Headings_to_Title_Case
rem define variables
dim document as Object
dim dispatcher as Object
Dim Proceed As boolean
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem loop not working
Do
' Call other macro to find next Heading:
Heading_findNext
dispatcher.executeDispatch(document, ".uno:EndOfLineSel", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:ChangeCaseToTitleCase", "", 0, Array())
Loop While Proceed
end sub
見出しを見つけるために呼び出されるマクロは次のとおりです。
sub Heading_findNext
'moves text cursor, but not view cursor, to heading
Dim oStyle, oCurs, oDoc, oVC, Proceed
oDoc = ThisComponent.Text
oVC = ThisComponent.CurrentController.getViewCursor
oCurs = ThisComponent.Text.createTextCursorByRange(oVC)
Do
Proceed = oCurs.gotoNextParagraph(false)
oStyle = Mid(oCurs.ParaStyleName, 1, 2)
Select Case oStyle
Case "_H", "He"
oVC = ThisComponent.CurrentController.getviewcursor()
oVC.gotoRange(oCurs, False)
Exit Do
End Select
Loop While Proceed <> false
end sub