This example demonstrates how an instance of an object can be passed to the
VBA that is running in Excel and how a method can be called on that instance.
run.wsf
run.wsf creates a call back object in order to receive message from Excel when the code is executed.
<job>
<script language="VBScript" src="..\..\..\create-MS-Office-app.vbs" />
<script language="VBScript">
option explicit
class callBack ' {
'
' Define a simple class with one method to be called from
' the Excel application.
'
'
sub message(txt) ' {
wscript.echo("Excel says: " & txt)
end sub ' }
end class ' }
dim app
dim xls
set xls = createOfficeApp("excel", currentDir() & "created.xlsm")
if xls is nothing then ' {
wscript.echo("Could not create excel worksheet.")
wscript.quit(-1)
end if ' }
set app = xls.application
importVBAFile app, currentDir() & "functions.bas"
dim cb
set cb = new callBack
app.run "main", cb
xls.save
wscript.echo "The end"
</script> </job>
functions.bas
functions.bas contains the sub main which is called from run.wsf and gets the instance of callBack object that was created in run.wsf.
main calls message twice. The messages will be displayed in the console from where run.wsf` was executed.
option explicit
sub main(callback as variant) ' {
callback.message("Main was started")
cells(1,1) = "Hello world"
callback.message("Finished.")
end sub ' }