Estoy intentando escribir una macro y necesito pasar al siguiente párrafo, donde probaré la primera letra en busca de mayúsculas. He pasado horas y sólo he encontrado documentación inexacta o difícil de seguir para algo que creo que debería ser simple. Cualquier dirección podría ser apreciada. Hasta ahora tengo:
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
Respuesta1
Hay varios problemas:
- ve a la derecha()devuelve un valor booleano para indicar el éxito, no la cadena seleccionada.
CapsTest
es una cadena, no un valor booleano, por lo que no se puede utilizar como condición de bucle.- ¿Cómo supiste que el código no funcionaba? Tal vez usted tenía la intención de utilizar elver cursor, lo que haría que el cursor visible se moviera. (Sin embargo, un cursor de texto probablemente sea mejor).
- El código siempre ignora el primer párrafo, lo que puede ser intencionado pero parece extraño.
- Hay muchas variables no utilizadas y la capitalización es inconsistente.
Aquí está el código de trabajo:
' 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
Entonces, si el documento contiene:
a
b
C
d
Luego se imprime la macro Found result: "C"
.
Asegúrate de revisarEl documento macro de Andrew Pitonyak. Contiene muchos ejemplos excelentes.