Class

ExcelApplication


Description

Used to automate Microsoft Excel. Supported on the Windows platform only. You will need to copy the MSOfficeAutomation plugin (located in the Extras folder of the installation) to the Plugins folder before you can use this class.

Properties

Name

Type

Read-Only

Shared

Handle

Ptr

Methods

Name

Parameters

Returns

Shared

Constructor

copy As OLEObject

Constructor

ProgramID As String

Constructor

ProgramID As String, NewInstance As Boolean

Invoke

NameOfFunction As String

Variant

TypeName

String

Value

PropertyName As String

Variant

ValueArray

Name As String, Parameters() As Variant

Variant()

ValueArray2D

Name As String, Parameters() As Variant

Variant()

Events

Name

Parameters

Returns

EventTriggered

NameOfEvent As String, Parameters() As Variant

Variant

Property descriptions


ExcelApplication.Handle

Handle As Ptr

Returns a pointer to the IDispatch interface that is being used.

Method descriptions


ExcelApplication.Constructor

Constructor(copy As OLEObject)

Note

Constructors are special methods called when you create an object with the New keyword and pass in the parameters above.

Creates a copy of the OLEObject.


ExcelApplication.Constructor

Constructor(ProgramID As String)

Note

Constructors are special methods called when you create an object with the New keyword and pass in the parameters above.

Creates a new OLEObject using the passed ProgramID is the COM server's program ID as stored in the registry. It can also be the Class ID (in curly braces). This constructor will try to find a previous instance of the COM server if it is running. Otherwise, it will create a new instance.


ExcelApplication.Constructor

Constructor(ProgramID As String, NewInstance As Boolean)

Note

Constructors are special methods called when you create an object with the New keyword and pass in the parameters above.

Creates a new OLEObject using the passed ProgramID is the COM server's program ID as stored in the registry. The NewInstance parameter specifies whether to create a new instance of the COM server (True) or try to use an existing one if it is running (False).

The following example automates Internet Explorer.

Try
  Var obj As OLEObject
  Var v As Variant
  Var params(1) As Variant

  obj = New OLEObject("InternetExplorer.Application", True)
  obj.Value("Visible") = True
  params(1) = "https://www.xojo.com"
  v = obj.Invoke("Navigate", params)
Catch err As OLEException
    MessageBox(err.Message)
End try

ExcelApplication.Invoke

Invoke(NameOfFunction As String) As Variant

Invokes a method of the COM server, and passes the array of parameters to the method.

Make sure to correctly dimension the array, as this will determine the number of parameters that get passed to the method. The first parameter begins at 1.


ExcelApplication.TypeName

TypeName As String

Returns a String that provides Variant subtype information about the object.


ExcelApplication.Value

Value(PropertyName As String) As Variant

Used to get or set a value of the object.

The parameter PropertyName is the name of the property to assign a new value to or to get the value. The value property can optionally take a list of properties when assigning a value, i.e.,

OLEObject.Value(NameOfProperty As String, params() As Variant) = value

If the optional parameter ByValue is True, property assignment is by value.


ExcelApplication.ValueArray

ValueArray(Name As String, Parameters() As Variant) As Variant()

Used to get or set a value of the object.

The Name parameter is the name of the property to assign a new value to or to get the value. ValueArray can accept a list of parameters to pass to the automation object. The parameters array is assumed to be 1-based.


ExcelApplication.ValueArray2D

ValueArray2D(Name As String, Parameters() As Variant) As Variant()

Used to get or set a value of the object for two-dimensional arrays.

The Name parameter is the name of the property to assign a new value to or to get the value. ValueArray2D can accept a list of parameters to pass to the automation object. The Parameters array is assumed to be 1-based.

Event descriptions


ExcelApplication.EventTriggered

EventTriggered(NameOfEvent As String, Parameters() As Variant) As Variant

Occurs when the OLEObject receives an event from the automation server. The event name is passed as the first parameter and the parameters for the event are passed as an array of variants.

Notes

The language that you use to automate Microsoft Office applications is documented by Microsoft and numerous third-party books on Visual Basic for Applications (VBA). Microsoft Office applications provide online help for VBA. In Office 2007, click the Microsoft Office button and then click Options. Then select Popular and select the Show Developer Tab in the Ribbon checkbox.

You will then see a Visual Basic button in the Code group in the ribbon and menubar now includes a Help menu which leads to the VB online help.

To access the online help in Office 2003, choose Macros from the Tools Menu of your MS Office application, and then choose Visual Basic Editor from the Macros submenu. When the Visual Basic editor appears, choose Microsoft Visual Basic Help from the Help menu. The help is contextual in the sense that it provides information on automating the Office application from which you launched the Visual Basic editor.

If VBA Help does not appear, you will need to install the VBA help files. On Windows Office 2003, Office prompts you to install the VBA help files when you first request VBA help. You don't need the master CD.

Microsoft has additional information on VBA at http://msdn.microsoft.com/vbasic/ and have published their own language references on VBA. One of several third-party books on VBA is "VB & VBA in a Nutshell: The Language" by Paul Lomax (ISBN: 1-56592-358-8).

Sample code

The following code transfers the information in a DesktopListBox to Excel and tells Excel to compute and format a column total. The code is in a DesktopButton's Pressed event handler and it assumes that a two-column DesktopListBox, ListBox1, is in the window. It contains the following data.

Item

Price

Apples

1.77

Oranges

1.13

Bananas

0.40

Grapes

0.80

Try
  Var excel As New ExcelApplication
  Var book As ExcelWorkbook
  Var sheet As ExcelWorksheet

  excel.Visible = True
  book = excel.Workbooks.Add
  excel.ActiveSheet.Name = "Expenses Report"
  For i As Integer = 0 To ProduceList.RowCount - 1
    excel.Range("A" + Str(i + 1), "A" + Str(i + 1)).Value = ProduceList.CellTextAt(i, 0)
    excel.Range("B" + Str(i + 1), "B" + Str(i + 1)).Value = ProduceList.CellTextAt(i, 1)
  Next
  excel.Range("A" + Str(ProduceList.RowCount + 1), "A"+ _
    Str(ProduceList.RowCount + 1)).Value = "Total"
  excel.Range("B1", "B" + Str(ProduceList.RowCount)).Style = "Currency"
  excel.Range("B" + Str(ProduceList.RowCount + 1), "B"+ _
    Str(ProduceList.RowCount + 1)).Value = "=SUM(B1:B" + _
    Str(ProduceList.RowCount) + ")"
Catch err As OLEException
    MessageBox(err.Message)
End Try

Compatibility

All project types on all supported operating systems.