OLEObject

From Xojo Documentation
Jump to: navigation, search

Class (inherits from Object)

Used to automate COM servers. Use the WordApplication, ExcelApplication, and PowerPointApplication classes to automate Microsoft Office applications. OLE is supported on the Windows platform only.

Events
EventTriggered


Properties
Handle


Methods
Invoke Value
Invoke ValueArray
TypeName ValueArray2D


Constructors

OLEObject.Constructor(ProgramID as String)


OLEObject.Constructor(ProgramID as String, NewInstance as Boolean)


OLEObject.Constructor(copy as OLEObject)


Notes

By default, OLEObject will make the property assignment by value. If it encounters an error it will try by reference if the property is an object. If the optional ByValue parameter is True, the property assignment is by value (i.e., a copy); otherwise the assignment is by reference (i.e., a pointer copy). In Visual Basic, an assignment by reference is done using the Set command, but since Xojo doesn't provide that feature, you will need to use the ByValue parameter when you know the assignment should be by reference.

Currency types are treated as String to preserve precision.

Since OLEObject uses Operator_Lookup, you can also use dot notation to access OLEProperties.

Examples

The following example automates Internet Explorer.

Dim obj As OLEObject
Dim v As Variant
Dim params(1) As Variant

obj = New OLEObject("InternetExplorer.Application", True)
obj.Value("Visible") = True
params(1) = "http://www.wikipedia.org/"
v = obj.invoke("Navigate", params)

Exception err As OLEException
MsgBox(err.Message)

The OLEObject class supports setting indexed properties. For example the Word.Document.Compatibility property is an indexed property. Here is an example.

Dim word As New OLEObject("Word.Application")
Dim doc As OLEObject

word.Visible = True
doc = word.Documents.Add

Dim params(1) As Variant
params(1) = Office.wdNoTabHangIndent

doc.Value("Compatibility", params) = True
// or
/doc.Compatibility(Office.wdNoTabHangIndent)=True

The following example creates a copy of the passed OLEObject using the copy constructor and opens a new Word document.

Dim word As New OLEObject("word.Application")
Dim wordCopy As OLEObject
wordCopy = New OLEObject(word)
wordCopy.Visible = True
wordCopy.Documents.Add

This example automates Microsoft Word.

Dim obj As OLEObject
Dim docs As OLEObject
Dim doc As OLEObject
Dim range As OLEObject
Dim v As Variant

obj = New OLEObject("Word.Application", True)

// make it visible
obj.Value("Visible") = True

v = obj.Value("Documents")
If v.ObjectValue IsA OLEObject Then
docs = OLEObject(v.ObjectValue)
v = docs.Invoke("Add")
If v.ObjectValue IsA OLEObject Then
doc = OLEObject(v.ObjectValue)
v = doc.Invoke("Range")
If v.ObjectValue IsA OLEObject Then
range = OLEObject(v.ObjectValue)
range.Value("Text") = "This is a sentence."
End If
End If
End If

Exception err As OLEException
MsgBox(err.Message)

This example shows how to get the MoviePlayer CurrentPosition using both dot notation and function calls:

Dim o As OLEObject = MoviePlayer1.MovieController
Dim v As Variant = o.Value("Controls")
If v IsA OLEObject Then
Dim pos As Double = OLEObject(v).Value("CurrentPosition")
End If

And with dot notation:

Try
Dim pos As Double = MoviePlayer1.MovieController.Controls.CurrentPosition
Catch e As OLEException
MsgBox("OLE access error.")
End Try

See Also

ExcelApplication, Office, OLEContainer, OLEParameter, PowerPointApplication, WordApplication classes; OLEException error.

Personal tools
Namespaces

Variants
Actions
Main
Content
Starting Out
Dig Deeper
More Help
Toolbox
About