It turns out that you can control OOo from within the Microsoft Office family of products. The trick is to create a service manager, which starts OOo if it is not currently running. Accessing OOo documents from Microsoft Office is similar to accessing OOo documents using other non-StarBasic languages. OOo Basic provides nice shortcuts that are not available from Microsoft Office. For example, in OOo Basic, when I want the third sheet, I simply use oDoc.Sheets(2); in Microsoft Office, however, you cannot access the Sheets property as an array. I wrote and ran the macro in Listing 47 from Microsoft Visual Basic from Microsoft Excel.
![]() |
Sub ControlOOo() Rem The service manager is always the first thing to create. Rem If OOo is not running, it is started. Set oManager = CreateObject("com.sun.star.ServiceManager") Rem Create the desktop. Set oDesktop = oManager.createInstance("com.sun.star.frame.Desktop") Rem Open a new empty Calc document. Dim args() Dim s As String Set s = "private:factory/scalc" Set oDoc = oDesktop.loadComponentFromURL(s, "_blank", 0, args()) Dim oSheet As Object Dim oSheets As Object Dim oCell As Object Set oSheets = oDoc.sheets.CreateEnumeration Set oSheet = oSheets.nextElement Set oCell = oSheet.getCellByPosition(0, 0) oCell.setFormula ("Hello From Excel") 'Cell A1 oCell.CellBackColor = RGB(127, 127, 127) End Sub
![]() |