I would like to embed a Flex 3 application on an Excel 2003
worksheet. The Flex application must be able to communicate with
Excel VBA code (to transmit or receive data for example).
The only way yet found to interact is to use the
ExternalInterface.call() method in Flex application. Arguments can
be passed, althought the call is transmitted under XML string form
into Excel VBA code (string must be parsed manually in VBA code). A
value is returned to Flex application using the SetReturnValue
method of the ShockwaveFlash object. The returned value is of
string type, even if we specify an other type in response message.
1) As the return value from the ExternalInterface.call() method is
of 'object' type, is it possible to get the return value according
to its specified type in Flex application?
The ExternalInterface is a bi-directional API, so it is
theoretically possible to send command to Flex application from
Excel VBA. I've tried many argument syntax (based on XML, like
"Call ShockwaveFlash1.CallFunction("<invoke name=""aFlexMethod""
returntype=""xml""/>")") without any success.
2) How can I call Flex methods from Excel VBA code?
An other problem with the ExternalInterface use, is that,
when the Flex application is set to 'embedded' to Excel, a security
sandbox violation error is thrown:
SecurityError: Error #2060: Security sandbox violation:
cannot access <unknown>.
I tried to change some properties (allowDomain,
allowInsecureDomain, allowScriptAccess, allowNetworking) without
3) How can I get rid of this error?
The ShockwaveFlash object has GetVariable() / SetVariable()
and TGetProperty() / TSetProperty() methods. All I know is that the
GetVariable with "/" argument returns "_level0" and all the other
returns 'method call failed' or a 'Type mismatch' error.
4) How can I use these methods to get/set Flex existing
public variables or to customize displayed components?
5) Are there some other methods / properties that allow Flex
/ Excel communication (passing an Excel worksheet data into an
array argument to Flex application for example)?