| Windows COM Support / WinCOM examples | |
This section provides a Wincom and Excel example.
DEFINE xlapp INTEGER
DEFINE xlwb INTEGER
MAIN
DEFINE result INTEGER
DEFINE str STRING
--initialization of global variables
LET xlapp = -1
LET xlwb = -1
--first, we must create an Instance of an Excel Application
CALL ui.Interface.frontCall("WinCOM", "CreateInstance",
["Excel.Application"], [xlapp])
CALL CheckError(xlapp, __LINE__)
--then adding a Workbook to the current document
CALL ui.interface.frontCall("WinCOM", "CallMethod",
[xlapp, "WorkBooks.Add"], [xlwb])
CALL CheckError(xlwb, __LINE__)
--then, setting it to be visible
CALL ui.interface.frontCall("WinCOM", "SetProperty",
[xlapp, "Visible", true], [result])
CALL CheckError(result, __LINE__)
--then CALL SetProperty to set the value of the cell
CALL ui.Interface.frontCall("WinCOM", "SetProperty",
[xlwb, 'activesheet.Range("A1").Value', "foo"],[result])
CALL CheckError(result, __LINE__)
--then CALL GetProperty to check the value again
CALL ui.Interface.frontCall("WinCOM", "GetProperty",
[xlwb, 'activesheet.Range("A1").Value'], [str])
CALL CheckError(str, __LINE__)
DISPLAY "content of the cell is: " || str
--then Free the memory on the client side
CALL freeMemory()
END MAIN
FUNCTION freeMemory()
DEFINE res INTEGER
IF xlwb != -1 THEN
CALL ui.Interface.frontCall("WinCOM","ReleaseInstance", [xlwb], [res] )
END IF
IF xlapp != -1 THEN
CALL ui.Interface.frontCall("WinCOM","ReleaseInstance", [xlapp], [res] )
END IF
END FUNCTION
FUNCTION checkError(res, lin)
DEFINE res INTEGER
DEFINE lin INTEGER
DEFINE mess STRING
IF res = -1 THEN
DISPLAY "COM Error for call at line:", lin
CALL ui.Interface.frontCall("WinCOM","GetError",[],[mess])
DISPLAY mess
--let's release the memory on the GDC side
CALL freeMemory()
DISPLAY "Exit with COM Error."
EXIT PROGRAM (-1)
END IF
END FUNCTION