[19192] in s-news-athena
[S] RE: OLE automation headaches
daemon@ATHENA.MIT.EDU (Chris Disdero)
Sun Sep 12 00:08:03 1999
Date: Sat, 11 Sep 1999 21:01:14 -0700 (PDT)
From: Chris Disdero <cdisdero@statsci.com>
To: mconklin@customresearch.com
Cc: s-news@wubios.wustl.edu, steam@statsci.com
Message-Id: <Pine.GSO.3.96.990911205419.26139A-200000@melon>
Mime-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-851401618-937108874=:26139"
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.
---559023410-851401618-937108874=:26139
Content-Type: TEXT/PLAIN; charset=US-ASCII
In response to your query regarding how to access the 'Item' property from
an S-PLUS script, you can use call.ole.method() instead of using
get.ole.property() to call the 'Item' property of an Excel collection
class. Using call.ole.method() allows you to pass the index argument you
need to get the item. Below and attached is an example S-PLUS script
which demonstrates this:
# Example S-PLUS code to show how to access the 'Item' property
# of the 'Styles' collection object for an Excel workbook object
# --------------------------------------------------------------
# Written by: Chris Disdero 990911
# Create a new Excel application instance and make it visible
pExcel <- create.ole.object( "excel.application" )
ExcelVisible <- get.ole.property( pExcel, "visible" )$visible
if ( !ExcelVisible ) set.ole.property( pExcel, list( visible=T ) )
# Create a new workbook
pWorkBooks <- get.ole.property( pExcel, "workbooks" )[[1]]
pNewBook <- call.ole.method( pWorkBooks, "Add" )
# Get the 'Styles' collection object for this new workbook
pStyles <- get.ole.property( pNewBook, "Styles" )[[1]]
# Get the total number of styles items for this collection
stylecount <- get.ole.property( pStyles, "Count" )$Count
# Loop through styles...
for(nStyle in 1:stylecount)
{
# Get the 'Styles' items by calling the 'Item' property
# of the 'Styles' collection object using call.ole.method()
# instead of get.ole.property() because get.ole.property()
# does not allow you to pass arguments to the property. NOTE:
# in general this technique works with most servers because
# properties and methods are not considered to be different.
pStyle <- call.ole.method( pStyles, "Item", nStyle )
# For this 'Style' get the name and print it out
sStyleName <- get.ole.property( pStyle, "Name")$Name
print( sStyleName )
release.ole.object( pStyle )
rm( sStyleName, pStyle )
}
release.ole.object( pStyles )
release.ole.object( pNewBook )
release.ole.object( pWorkBooks )
release.ole.object( pExcel )
rm( pExcel, ExcelVisible, pWorkBooks, pNewBook, pStyles, stylecount )
---559023410-851401618-937108874=:26139
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="mconklinExcelStyleItem.ssc"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GSO.3.96.990911210114.26139B@melon>
Content-Description:
IyBFeGFtcGxlIFMtUExVUyBjb2RlIHRvIHNob3cgaG93IHRvIGFjY2VzcyB0
aGUgJ0l0ZW0nIHByb3BlcnR5DQ0KIyBvZiB0aGUgJ1N0eWxlcycgY29sbGVj
dGlvbiBvYmplY3QgZm9yIGFuIEV4Y2VsIHdvcmtib29rIG9iamVjdA0NCiMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NDQojIFdyaXR0ZW4gYnk6IENocmlzIERpc2Rl
cm8gOTkwOTExDQ0KDQ0KIyBDcmVhdGUgYSBuZXcgRXhjZWwgYXBwbGljYXRp
b24gaW5zdGFuY2UgYW5kIG1ha2UgaXQgdmlzaWJsZQ0NCnBFeGNlbCA8LSBj
cmVhdGUub2xlLm9iamVjdCggImV4Y2VsLmFwcGxpY2F0aW9uIiApDQ0KRXhj
ZWxWaXNpYmxlIDwtIGdldC5vbGUucHJvcGVydHkoIHBFeGNlbCwgInZpc2li
bGUiICkkdmlzaWJsZQ0NCmlmICggIUV4Y2VsVmlzaWJsZSApIHNldC5vbGUu
cHJvcGVydHkoIHBFeGNlbCwgbGlzdCggdmlzaWJsZT1UICkgKQ0NCg0NCiMg
Q3JlYXRlIGEgbmV3IHdvcmtib29rDQ0KcFdvcmtCb29rcyA8LSBnZXQub2xl
LnByb3BlcnR5KCBwRXhjZWwsICJ3b3JrYm9va3MiIClbWzFdXQ0NCnBOZXdC
b29rIDwtIGNhbGwub2xlLm1ldGhvZCggcFdvcmtCb29rcywgIkFkZCIgKQ0N
Cg0NCiMgR2V0IHRoZSAnU3R5bGVzJyBjb2xsZWN0aW9uIG9iamVjdCBmb3Ig
dGhpcyBuZXcgd29ya2Jvb2sNDQpwU3R5bGVzIDwtIGdldC5vbGUucHJvcGVy
dHkoIHBOZXdCb29rLCAiU3R5bGVzIiApW1sxXV0NDQoNDQojIEdldCB0aGUg
dG90YWwgbnVtYmVyIG9mIHN0eWxlcyBpdGVtcyBmb3IgdGhpcyBjb2xsZWN0
aW9uDQ0Kc3R5bGVjb3VudCA8LSBnZXQub2xlLnByb3BlcnR5KCBwU3R5bGVz
LCAiQ291bnQiICkkQ291bnQNDQoNDQojIExvb3AgdGhyb3VnaCBzdHlsZXMu
Li4NDQpmb3IoblN0eWxlIGluIDE6c3R5bGVjb3VudCkNDQp7DQ0KCSMgR2V0
IHRoZSAnU3R5bGVzJyBpdGVtcyBieSBjYWxsaW5nIHRoZSAnSXRlbScgcHJv
cGVydHkNDQoJIyBvZiB0aGUgJ1N0eWxlcycgY29sbGVjdGlvbiBvYmplY3Qg
dXNpbmcgY2FsbC5vbGUubWV0aG9kKCkNDQoJIyBpbnN0ZWFkIG9mIGdldC5v
bGUucHJvcGVydHkoKSBiZWNhdXNlIGdldC5vbGUucHJvcGVydHkoKQ0NCgkj
IGRvZXMgbm90IGFsbG93IHlvdSB0byBwYXNzIGFyZ3VtZW50cyB0byB0aGUg
cHJvcGVydHkuICBOT1RFOg0NCgkjIGluIGdlbmVyYWwgdGhpcyB0ZWNobmlx
dWUgd29ya3Mgd2l0aCBtb3N0IHNlcnZlcnMgYmVjYXVzZQ0NCgkjIHByb3Bl
cnRpZXMgYW5kIG1ldGhvZHMgYXJlIG5vdCBjb25zaWRlcmVkIHRvIGJlIGRp
ZmZlcmVudC4NDQoJcFN0eWxlIDwtIGNhbGwub2xlLm1ldGhvZCggcFN0eWxl
cywgIkl0ZW0iLCBuU3R5bGUgKQ0NCgkNDQoJIyBGb3IgdGhpcyAnU3R5bGUn
IGdldCB0aGUgbmFtZSBhbmQgcHJpbnQgaXQgb3V0DQ0KCXNTdHlsZU5hbWUg
PC0gZ2V0Lm9sZS5wcm9wZXJ0eSggcFN0eWxlLCAiTmFtZSIpJE5hbWUNDQoJ
cHJpbnQoIHNTdHlsZU5hbWUgKQ0NCgkNDQoJcmVsZWFzZS5vbGUub2JqZWN0
KCBwU3R5bGUgKQ0NCglybSggc1N0eWxlTmFtZSwgcFN0eWxlICkNCn0NDQpy
ZWxlYXNlLm9sZS5vYmplY3QoIHBTdHlsZXMgKQ0NCnJlbGVhc2Uub2xlLm9i
amVjdCggcE5ld0Jvb2sgKQ0NCnJlbGVhc2Uub2xlLm9iamVjdCggcFdvcmtC
b29rcyApDQ0KcmVsZWFzZS5vbGUub2JqZWN0KCBwRXhjZWwgKQ0NCnJtKCBw
RXhjZWwsIEV4Y2VsVmlzaWJsZSwgcFdvcmtCb29rcywgcE5ld0Jvb2ssIHBT
dHlsZXMsIHN0eWxlY291bnQgKQ==
---559023410-851401618-937108874=:26139--
-----------------------------------------------------------------------
This message was distributed by s-news@wubios.wustl.edu. To unsubscribe
send e-mail to s-news-request@wubios.wustl.edu with the BODY of the
message: unsubscribe s-news