Writing macros without the recorder

From Apache OpenOffice Wiki
Jump to: navigation, search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Chapter 17: Getting Started with Macros
< {{#switch:Previous Section Previous Section = Previous Section Next Section = Next Section Previous Page = Previous Page Next Page = Next Page }} {{#switch:Next Section Previous Section = Previous Section Next Section = Next Section Previous Page = Previous Page Next Page = Next Page }} >
< {{#switch:Previous Page Previous Section = Previous Section Next Section = Next Section Previous Page = Previous Page Next Page = Next Page }} {{#switch:Next Page Previous Section = Previous Section Next Section = Next Section Previous Page = Previous Page Next Page = Next Page }} >


The examples covered in this chapter are created using the macro recorder and the dispatcher. You can also write macros that directly access the objects that comprise OpenOffice.org. In other words, you can directly manipulate a document.

Directly manipulating OOo's internal objects is an advanced topic that is beyond the scope of this chapter. A simple example, however, demonstrates how this works.

Listing 4: Append the text “Hello" to the current document.

  Sub AppendHello
    Dim oDoc
    Dim sTextService$
    Dim oCurs
    
    REM ThisComponent refers to the currently active document.
    oDoc = ThisComponent
  
    REM Verify that this is a text document  
    sTextService = "com.sun.star.text.TextDocument"
    If NOT oDoc.supportsService(sTextService) Then
      MsgBox "This macro only works with a text document"
      Exit Sub
    End If
  
    REM Get the view cursor from the current controller.
    oCurs = oDoc.currentController.getViewCursor()
  
    REM Move the cursor to the end of the document
    oCurs.gotoEnd(False)
  
    REM Insert text "Hello" at the end of the document
    oCurs.Text.insertString(oCurs, "Hello", False)  
  End Sub
Content on this page is licensed under the Creative Common Attribution 3.0 license (CC-BY).
Personal tools