Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Implementing Excel events
Message
From
02/10/2009 05:27:35
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
 
To
02/10/2009 04:35:43
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Environment versions
Visual FoxPro:
VFP 8 SP1
OS:
Windows XP SP2
Miscellaneous
Thread ID:
01427263
Message ID:
01427268
Views:
59
Denis,
Here is a sample:
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
Enddefine
You don't have pathing problem since it would be used during development. When you compile your exe you also create that COM class.

Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform