Clear Local ox As 'excel.application' ox = Newobject('excel.application') oxEvents = Newobject("ExcelHandler",'','',ox) Eventhandler(ox,oxEvents) With ox .Workbooks.Add With .ActiveWorkBook.ActiveSheet For ix = 1 To 10 && normally you should never use such data filling For jx = 1 To 10 .Cells(m.ix,m.jx).Value = m.ix * 1000 + m.jx Endfor Endfor Endwith .Visible = .T. Endwith Define Class ExcelHandler As Session OlePublic Implements AppEvents In "c:\program files\microsoft office\office11\excel.exe" oHook = Null Procedure Init(loHook) This.oHook = loHook Endproc Procedure AppEvents_NewWorkbook(Wb As VARIANT) As VOID Endproc Procedure AppEvents_SheetSelectionChange(Sh As VARIANT, Target As VARIANT) As VOID If Target.Address = Sh.usedrange.Address ? 'Attempted to select all',Target.Address,'in sheet',Sh.Name,'Target changed' Sh.Cells(1,1).Select Endif Endproc Procedure AppEvents_SheetBeforeDoubleClick(Sh As VARIANT, Target As VARIANT, Cancel As LOGICAL @) As VOID Endproc Procedure AppEvents_SheetBeforeRightClick(Sh As VARIANT, Target As VARIANT, Cancel As LOGICAL @) As VOID Endproc Procedure AppEvents_SheetActivate(Sh As VARIANT) As VOID Endproc Procedure AppEvents_SheetDeactivate(Sh As VARIANT) As VOID Endproc Procedure AppEvents_SheetCalculate(Sh As VARIANT) As VOID Endproc Procedure AppEvents_SheetChange(Sh As VARIANT, Target As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookOpen(Wb As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookActivate(Wb As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookDeactivate(Wb As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookBeforeClose(Wb As VARIANT, Cancel As LOGICAL @) As VOID ? 'WorkBook closing',Datetime() Eventhandler(This.oHook,This,.T.) Endproc Procedure AppEvents_WorkbookBeforeSave(Wb As VARIANT, SaveAsUI As LOGICAL, Cancel As LOGICAL @) As VOID ? 'Attempted to save', Datetime(), 'denied silently' Cancel = .T. Endproc Procedure AppEvents_WorkbookBeforePrint(Wb As VARIANT, Cancel As LOGICAL @) As VOID ? 'Attempted to print', Datetime(), 'denied silently' Cancel = .T. Endproc Procedure AppEvents_WorkbookNewSheet(Wb As VARIANT, Sh As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookAddinInstall(Wb As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookAddinUninstall(Wb As VARIANT) As VOID Endproc Procedure AppEvents_WindowResize(Wb As VARIANT, Wn As VARIANT) As VOID Endproc Procedure AppEvents_WindowActivate(Wb As VARIANT, Wn As VARIANT) As VOID Endproc Procedure AppEvents_WindowDeactivate(Wb As VARIANT, Wn As VARIANT) As VOID Endproc Procedure AppEvents_SheetFollowHyperlink(Sh As VARIANT, Target As VARIANT) As VOID Endproc Procedure AppEvents_SheetPivotTableUpdate(Sh As VARIANT, Target As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookPivotTableCloseConnection(Wb As VARIANT, Target As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookPivotTableOpenConnection(Wb As VARIANT, Target As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookSync(Wb As VARIANT, SyncEventType As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookBeforeXmlImport(Wb As VARIANT, Map As VARIANT, Url As String, IsRefresh As LOGICAL, Cancel As LOGICAL @) As VOID Endproc Procedure AppEvents_WorkbookAfterXmlImport(Wb As VARIANT, Map As VARIANT, IsRefresh As LOGICAL, Result As VARIANT) As VOID Endproc Procedure AppEvents_WorkbookBeforeXmlExport(Wb As VARIANT, Map As VARIANT, Url As String, Cancel As LOGICAL @) As VOID Endproc Procedure AppEvents_WorkbookAfterXmlExport(Wb As VARIANT, Map As VARIANT, Url As String, Result As VARIANT) As VOID Endproc EnddefineYou don't have pathing problem since it would be used during development. When you compile your exe you also create that COM class.