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