DEFINE VARIABLE chExcel AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE chModule AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE chWorkbook AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE chWorksheet AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE macroCode AS CHARACTER NO-UNDO.
CREATE "Excel.Application" chExcel.
chWorkbook = chExcel:Workbooks:Add().
chWorkSheet = chExcel:Sheets:Item(1).
/* Add a module to the workbook */
chModule = chWorkbook:VBProject:VBComponents:Add(1).
/* Create the macro code */
macroCode = "Sub Macro1()" + CHR(13) + CHR(9) + "MsgBox " + CHR(34) + "Hello World." + CHR(34)
+ ", vbInformation, " + QUOTER("Information") + CHR(13) + "End Sub".
/* Add the macro code */
chModule:CodeModule:AddFromString(macroCode).
chWorkbook:SaveAs("C:\Temp\MacroAdded.xlsm",52,,,,,).
chExcel:Visible = TRUE.
chExcel:Run("Macro1").
IF VALID-HANDLE(chModule) THEN
RELEASE OBJECT chModule.
IF VALID-HANDLE(chWorksheet) THEN
RELEASE OBJECT chWorksheet.
IF VALID-HANDLE(chWorkbook) THEN
RELEASE OBJECT chWorkbook.
IF VALID-HANDLE(chExcel) THEN
RELEASE OBJECT chExcel.