Mam makro LibreOffice Writer, które znajduje następny akapit nagłówka i konwertuje go na wielkość liter. Obecnie muszę go wywoływać wielokrotnie, aż do osiągnięcia końca pliku. Próbuję skonfigurować pętlę, która zrobi wszystko, ale zatrzymaj się na EOF. Ale pętla nie działa.
Każda pomoc będzie mile widziana. Oto co mam.
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
Wywoływane makro w celu znalezienia nagłówków to:
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
macros
libreoffice
libreoffice-writer
eof
Paul B.
źródło
źródło