Libreoffice 매크로 기본: 대문자 테스트를 위해 다음 단락으로 건너뛰기

Libreoffice 매크로 기본: 대문자 테스트를 위해 다음 단락으로 건너뛰기

매크로를 작성하려고 하는데 다음 단락으로 건너뛰어 첫 글자의 대문자 사용을 테스트해야 합니다. 나는 몇 시간을 보냈고 단순해야 한다고 생각되는 문서에 대해서만 부정확하거나 따르기가 어렵다는 것을 발견했습니다. 어떤 방향이라도 감사하겠습니다. 지금까지 나는 다음을 가지고 있습니다 :

SUB FIND_PARAGRAPHS

Dim vDescriptor
dim Doc as object
dim Replace as object 
dim oCursor 
dim Proceed as Boolean
dim CapTest as String

vDescriptor = ThisComponent.createSearchDescriptor()
doc = ThisComponent
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

' test para begin; if capital test previous end 

oCursor = Doc.Text.createTextCursor()
Do 
    oCursor.gotoNextParagraph(false) 'NW
    CapTest = oCursor.goRight(1, true) 'NW
    if CapTest = ucase(CapTest) Then goto TestPreviousEnd
Loop While CapTest

TestPreviousEnd:

END SUB

답변1

몇 가지 문제가 있습니다:

  • 오른쪽으로()선택한 문자열이 아닌 성공을 나타내는 부울을 반환합니다.
  • CapsTest부울이 아닌 문자열이므로 루프 조건으로 사용할 수 없습니다.
  • 코드가 작동하지 않는다는 것을 어떻게 알았나요? 아마도 당신은커서 보기, 그러면 보이는 커서가 이동하게 됩니다. (그러나 텍스트 커서가 더 나을 수도 있습니다).
  • 코드는 의도적일 수도 있지만 이상하게 보이는 첫 번째 단락을 항상 무시합니다.
  • 사용하지 않는 변수가 많고 대소문자 표기가 일관되지 않습니다.

작업 코드는 다음과 같습니다.

' Find the first paragraph in the document that begins with a capital letter.
Sub Find_Capitalized_Paragraph
    Dim oDoc As Object
    Dim oCursor As Object
    Dim Proceed As Boolean
    Dim CapTest As String

    oDoc = ThisComponent
    oCursor = oDoc.Text.createTextCursor()
    oCursor.gotoStart(False)
    Do 
        oCursor.goRight(1, True)
        CapTest = oCursor.getString()
        If CapTest <> "" And CapTest = UCase(CapTest) Then Goto TestPreviousEnd
        oCursor.gotoNextParagraph(False)
    Loop While CapTest <> ""
    MsgBox("No results.")
    Exit Sub

    TestPreviousEnd:
    MsgBox("Found result: """ & CapTest & """")
End Sub

따라서 문서에 다음이 포함되어 있는 경우:

a
b
C
d

그런 다음 매크로가 인쇄됩니다 Found result: "C".

꼭 확인해보세요Andrew Pitonyak의 매크로 문서. 여기에는 훌륭한 사례가 많이 포함되어 있습니다.

관련 정보