OLEObjects for efficiency
When your automation command refers to a deeply nested object with
multiple server qualifiers, it takes time to negotiate the object’s
hierarchy and resolve the object reference. If you refer to the same
part of the object hierarchy repeatedly, then for efficiency you can
assign that part of the object reference to an OLEObject variable. The
reference is resolved once and reused.
Instead of coding repeatedly for different properties:
|
1 |
ole_1.Object.application.wordbasic.propertyname |
you can define an OLEObject variable to handle all the
qualifiers:
|
1 2 3 4 |
OLEObject ole_wordbasic ole_wordbasic = ole_1.Object.application.wordbasic ole_wordbasic.propertyname1 = value ole_wordbasic.propertyname2 = value |
Example: resolving an object
reference
This example uses an OLEObject variable to refer to a Microsoft
Word object. Because it is referred to repeatedly in a FOR loop, the
resolved OLEObject makes the code more efficient. The example destroys
the OLEObject variable when it is done with it:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
integer li_i, li_count string ls_curr_bookmark OLEObject ole_wb ole_1.Activate(InPlace!) ole_wb = ole_1.Object.application.wordbasic // Get the number of bookmarks li_count = ole_wb.countbookmarks // Get the name of each bookmark FOR li_i = 1 to count ls_curr_bookmark = ole_wb.bookmarkname(i) ... // code to save the bookmark name in a list END FOR |