Edge Rewrite
Jump to content

// Workers AI · dad joke modeDoes OpenOffice Basic have a social life? It's a little "basic" in relationships.

From Wikipedia, the free encyclopedia
(Redirected from StarOffice Basic)

OpenOffice Basic (formerly known as StarOffice Basic or StarBasic or OOoBasic) is a dialect of the programming language BASIC that originated with the StarOffice office suite and spread through OpenOffice.org and derivatives such as Apache OpenOffice and LibreOffice (where it is known as LibreOffice Basic). The language is a domain-specific programming language which specifically serves the OpenOffice application suite.

Example

[edit]

Although OpenOffice Basic is similar to other dialects of BASIC, such as Microsoft's Visual Basic for Applications (VBA), the application programming interface (API) is very different, as the example below of a macro illustrates. While there is a much easier way to obtain the "paragraph count" document property, the example shows the fundamental methods for accessing each paragraph in a text document, sequentially.

Sub ParaCount
'
' Count number of paragraphs in a text document
'
    Dim Doc As Object, Enum As Object, TextEl As Object, Count As Long
    Doc = ThisComponent
' Is this a text document?
    If Not Doc.SupportsService("com.sun.star.text.TextDocument") Then
        MsgBox "This macro must be run from a text document", 64, "Error"
        Exit Sub
    End If
    Count = 0
' Examine each component - paragraph or table?
    Enum = Doc.Text.CreateEnumeration
    While Enum.HasMoreElements
        TextEl = Enum.NextElement
' Is the component a paragraph?
        If TextEl.SupportsService("com.sun.star.text.Paragraph") Then
            Count = Count + 1
        End If
    Wend
'Display result
    MsgBox Count, 0, "Paragraph Count"
End Sub

VBA compatibility

[edit]

Partial support for VBA API under Option VBASupport 1 was introduced with OpenOffice 2.x circa 2005.[1] An underlying feature is Option Compatible, which enables a number of language features found in VBA (as well as other extensions beyond the StarBasic original).[2]

These features has been inherited into later versions as well as LibreOffice. LibreOffice has further built upon Option Compatible to provide more compatibility features and new features.[3][4] This option is implicitly enabled when opening a Microsoft Office document containing VBA code.[5]

The following Option directives are found in OpenOffice Basic and its dialects:[6]

NameValuesDescriptionStarOfficeOpenOfficeLibreOffice
Base 0 or 1Sets whether arrays are 0- or 1-based. Does not affect the number of elements in an array like VBA, unless Option Compatible is also set.Yes?YesYes
Compatible NoneLanguage extensions: accented characters as identifiers (O/L), VBA predefined constants (L), omission of New in Dim statements (L), default values for optional parameters (L), library preloading (L), Base affects array declaration (O/L) No?YesYes
ClassModule NoneTurns the module into a class module, one that contains the members, properties, procedures and functions for a class. Depends on Compatible, either set explicitly or implied by VBASupport. NoNoYes
Explicit NoneDisallow implicit declaration of variables.Yes?YesYes
Private NoneDisallow access from outside the library.No?Yes?Yes
VBASupport 0 or 1API compatibility with VBA. Implies Option Compatible.No2.0Yes

See also

[edit]

Further reading

[edit]
  • Steinberg, James (2012). Open Office Basic: An Introduction. CreateSpace Independent Publishing Platform. ISBN 978-1481270939.
  • "Porting Excel/VBA to Calc/StarBasic" (PDF). Openoffice.org. 2004-06-06.
[edit]
  1. "OpenOffice.org 3.0 New Features". www.openoffice.org. OpenOffice.org can run many VBA macros unmodified due to its built-in; limited VBA support.
  2. "OpenOffice.org 3.2 BASIC Guide" (PDF). p. 18.
  3. "Option VBASupport Statement". help.libreoffice.org.
  4. "CompatibilityMode function". help.libreoffice.org.
  5. "Support for VBA Macros". help.libreoffice.org. Support for VBA is not complete, but it covers a large portion of the common usage patterns. Most macros use a manageable subset of objects in the Excel API (such as the Range, Worksheet, Workbook, etc.) and the support include those objects, and the most commonly used method/properties of those objects. [...] The VBA (Visual Basic for Applications) code will be loaded ready to be executed. [...] After loading the VBA code, LibreOffice inserts the statement Option VBASupport 1 in every Basic module to enable a limited support for VBA statements, functions and objects.
  6. "Compiler Options". help.libreoffice.org.