PyXLL The Python Excel Add-In
  • Product
    • Features
    • Get Started
    • Request Demo
    • Download
  • Pricing
  • Resources
    • Documentation
    • Blog
    • Videos
    • FAQ
    • Learn Python
    • Customer Portal
    • About Us
  • Support
    • Documentation
    • Videos
    • FAQ
    • Contact Us
  • Contact Us
Table of Contents
  • PyXLL Documentation
  • Introduction to PyXLL
  • User Guide
  • Video Guides and Tutorials
  • API Reference
    • Worksheet Functions
    • Real Time Data
    • Macro Functions
    • Type Conversion
    • Ribbon Functions
    • Menu Functions
    • Plotting
    • Custom Task Panes
    • ActiveX Controls
    • Cell Formatting
    • Tables
    • Errors and Exceptions
    • Utility Functions
    • LRU Cache
    • Excel Application Events
      • xl_event
      • xl_event.new_workbook
      • xl_event.sheet_selection_change
      • xl_event.sheet_before_double_click
      • xl_event.sheet_before_right_click
      • xl_event.sheet_activate
      • xl_event.sheet_deactivate
      • xl_event.sheet_calculate
      • xl_event.sheet_change
      • xl_event.workbook_open
      • xl_event.workbook_activate
      • xl_event.workbook_deactivate
      • xl_event.workbook_before_close
      • xl_event.workbook_before_save
      • xl_event.workbook_before_print
      • xl_event.workbook_new_sheet
      • xl_event.workbook_addin_install
      • xl_event.workbook_addin_uninstall
      • xl_event.window_resize
      • xl_event.window_activate
      • xl_event.window_deactivate
      • xl_event.sheet_follow_hyperlink
      • xl_event.sheet_pivot_table_update
      • xl_event.workbook_pivot_table_close_connection
      • xl_event.workbook_pivot_table_open_connection
      • xl_event.workbook_sync
      • xl_event.workbook_before_xml_import
      • xl_event.workbook_after_xml_import
      • xl_event.workbook_before_xml_export
      • xl_event.workbook_after_xml_export
      • xl_event.workbook_rowset_complete
      • xl_event.after_calculate
      • xl_event.sheet_pivot_table_after_value_change
      • xl_event.sheet_pivot_table_before_allocate_changes
      • xl_event.sheet_pivot_table_before_commit_changes
      • xl_event.sheet_pivot_table_before_discard_changes
      • xl_event.protected_view_window_open
      • xl_event.protected_view_window_before_edit
      • xl_event.protected_view_window_before_close
      • xl_event.protected_view_window_resize
      • xl_event.protected_view_window_activate
      • xl_event.protected_view_window_deactivate
      • xl_event.workbook_after_save
      • xl_event.workbook_new_chart
    • PyXLL Add-in Events
    • Excel C API Functions
  • What’s new in PyXLL 5
  • Changelog
Close

Excel Application Events¶

New in PyXLL 5.12

The @xl_event decorators are used to register Python functions that will be called when specific Excel Application events occur.

The events that can be handled are the same as the Excel Application events available through VBA, and the Python functions have the same arguments as their VBA counterparts.

For more detailed information please see Excel Application Events in the user guide.

  • @xl_event

  • @xl_event.new_workbook

  • @xl_event.sheet_selection_change

  • @xl_event.sheet_before_double_click

  • @xl_event.sheet_before_right_click

  • @xl_event.sheet_activate

  • @xl_event.sheet_deactivate

  • @xl_event.sheet_calculate

  • @xl_event.sheet_change

  • @xl_event.workbook_open

  • @xl_event.workbook_activate

  • @xl_event.workbook_deactivate

  • @xl_event.workbook_before_close

  • @xl_event.workbook_before_save

  • @xl_event.workbook_before_print

  • @xl_event.workbook_new_sheet

  • @xl_event.workbook_addin_install

  • @xl_event.workbook_addin_uninstall

  • @xl_event.window_resize

  • @xl_event.window_activate

  • @xl_event.window_deactivate

  • @xl_event.sheet_follow_hyperlink

  • @xl_event.sheet_pivot_table_update

  • @xl_event.workbook_pivot_table_close_connection

  • @xl_event.workbook_pivot_table_open_connection

  • @xl_event.workbook_sync

  • @xl_event.workbook_before_xml_import

  • @xl_event.workbook_after_xml_import

  • @xl_event.workbook_before_xml_export

  • @xl_event.workbook_after_xml_export

  • @xl_event.workbook_rowset_complete

  • @xl_event.after_calculate

  • @xl_event.sheet_pivot_table_after_value_change

  • @xl_event.sheet_pivot_table_before_allocate_changes

  • @xl_event.sheet_pivot_table_before_commit_changes

  • @xl_event.sheet_pivot_table_before_discard_changes

  • @xl_event.protected_view_window_open

  • @xl_event.protected_view_window_before_edit

  • @xl_event.protected_view_window_before_close

  • @xl_event.protected_view_window_resize

  • @xl_event.protected_view_window_activate

  • @xl_event.protected_view_window_deactivate

  • @xl_event.workbook_after_save

  • @xl_event.workbook_new_chart

@xl_event(event: str, com_package: str = None, filter: Callable = None)[source]

Registers an Excel Application event handler.

This is the generic decorator that can be used for all event types.

Specific helper decorators are provided that can be used instead of this, and those are listed below.

Example:

from pyxll import xl_event

@xl_event("AfterCalculate")
def on_after_calculate():
    print("AfterCalculate fired")
Parameters:
  • event – Excel Application event name, as it is defined in VBA.

  • com_package –

    The COM package to use when passing COM arguments to the Python event hander.

    Can be either pywin32 or comtypes.

    If not specified, the default can be specified using the com_package setting in the [PYXLL]] section of the pyxll.cfg config file. pywin32 is used if no other default is specified.

  • filter –

    Function to call prior to the event handler to test if the handler should be called or not.

    The filter function should have the same signature as the event handler.

@xl_event.new_workbook(com_package: str = None, filter: Callable = None)

Registers a NewWorkbook event handler. Example usage:

from pyxll import xl_event

@xl_event.new_workbook
def on_new_workbook(workbook: object):
    print("NewWorkbook fired")

Equivalent to @xl_event("NewWorkbook").

@xl_event.sheet_selection_change(com_package: str = None, filter: Callable = None)

Registers a SheetSelectionChange event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_selection_change
def on_sheet_selection_change(sheet: object, target: object):
    print("SheetSelectionChange fired")

Equivalent to @xl_event("SheetSelectionChange").

@xl_event.sheet_before_double_click(com_package: str = None, filter: Callable = None)

Registers a SheetBeforeDoubleClick event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_before_double_click
def on_sheet_before_double_click(sheet: object, target: object, cancel: bool):
    print("SheetBeforeDoubleClick fired")

Equivalent to @xl_event("SheetBeforeDoubleClick").

@xl_event.sheet_before_right_click(com_package: str = None, filter: Callable = None)

Registers a SheetBeforeRightClick event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_before_right_click
def on_sheet_before_right_click(sheet: object, target: object, cancel: bool):
    print("SheetBeforeRightClick fired")

Equivalent to @xl_event("SheetBeforeRightClick").

@xl_event.sheet_activate(com_package: str = None, filter: Callable = None)

Registers a SheetActivate event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_activate
def on_sheet_activate(sheet: object):
    print("SheetActivate fired")

Equivalent to @xl_event("SheetActivate").

@xl_event.sheet_deactivate(com_package: str = None, filter: Callable = None)

Registers a SheetDeactivate event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_deactivate
def on_sheet_deactivate(sheet: object):
    print("SheetDeactivate fired")

Equivalent to @xl_event("SheetDeactivate").

@xl_event.sheet_calculate(com_package: str = None, filter: Callable = None)

Registers a SheetCalculate event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_calculate
def on_sheet_calculate(sheet: object):
    print("SheetCalculate fired")

Equivalent to @xl_event("SheetCalculate").

@xl_event.sheet_change(com_package: str = None, filter: Callable = None)

Registers a SheetChange event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_change
def on_sheet_change(sheet: object, target: object):
    print("SheetChange fired")

Equivalent to @xl_event("SheetChange").

@xl_event.workbook_open(com_package: str = None, filter: Callable = None)

Registers a WorkbookOpen event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_open
def on_workbook_open(workbook: object):
    print("WorkbookOpen fired")

Equivalent to @xl_event("WorkbookOpen").

@xl_event.workbook_activate(com_package: str = None, filter: Callable = None)

Registers a WorkbookActivate event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_activate
def on_workbook_activate(workbook: object):
    print("WorkbookActivate fired")

Equivalent to @xl_event("WorkbookActivate").

@xl_event.workbook_deactivate(com_package: str = None, filter: Callable = None)

Registers a WorkbookDeactivate event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_deactivate
def on_workbook_deactivate(workbook: object):
    print("WorkbookDeactivate fired")

Equivalent to @xl_event("WorkbookDeactivate").

@xl_event.workbook_before_close(com_package: str = None, filter: Callable = None)

Registers a WorkbookBeforeClose event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_before_close
def on_workbook_before_close(workbook: object, cancel: bool):
    print("WorkbookBeforeClose fired")

Equivalent to @xl_event("WorkbookBeforeClose").

@xl_event.workbook_before_save(com_package: str = None, filter: Callable = None)

Registers a WorkbookBeforeSave event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_before_save
def on_workbook_before_save(workbook: object, save_as_ui: bool, cancel: bool):
    print("WorkbookBeforeSave fired")

Equivalent to @xl_event("WorkbookBeforeSave").

@xl_event.workbook_before_print(com_package: str = None, filter: Callable = None)

Registers a WorkbookBeforePrint event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_before_print
def on_workbook_before_print(workbook: object, cancel: bool):
    print("WorkbookBeforePrint fired")

Equivalent to @xl_event("WorkbookBeforePrint").

@xl_event.workbook_new_sheet(com_package: str = None, filter: Callable = None)

Registers a WorkbookNewSheet event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_new_sheet
def on_workbook_new_sheet(workbook: object, sheet: object):
    print("WorkbookNewSheet fired")

Equivalent to @xl_event("WorkbookNewSheet").

@xl_event.workbook_addin_install(com_package: str = None, filter: Callable = None)

Registers a WorkbookAddinInstall event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_addin_install
def on_workbook_addin_install(workbook: object):
    print("WorkbookAddinInstall fired")

Equivalent to @xl_event("WorkbookAddinInstall").

@xl_event.workbook_addin_uninstall(com_package: str = None, filter: Callable = None)

Registers a WorkbookAddinUninstall event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_addin_uninstall
def on_workbook_addin_uninstall(workbook: object):
    print("WorkbookAddinUninstall fired")

Equivalent to @xl_event("WorkbookAddinUninstall").

@xl_event.window_resize(com_package: str = None, filter: Callable = None)

Registers a WindowResize event handler. Example usage:

from pyxll import xl_event

@xl_event.window_resize
def on_window_resize(workbook: object, wn: object):
    print("WindowResize fired")

Equivalent to @xl_event("WindowResize").

@xl_event.window_activate(com_package: str = None, filter: Callable = None)

Registers a WindowActivate event handler. Example usage:

from pyxll import xl_event

@xl_event.window_activate
def on_window_activate(workbook: object, wn: object):
    print("WindowActivate fired")

Equivalent to @xl_event("WindowActivate").

@xl_event.window_deactivate(com_package: str = None, filter: Callable = None)

Registers a WindowDeactivate event handler. Example usage:

from pyxll import xl_event

@xl_event.window_deactivate
def on_window_deactivate(workbook: object, wn: object):
    print("WindowDeactivate fired")

Equivalent to @xl_event("WindowDeactivate").

@xl_event.sheet_follow_hyperlink(com_package: str = None, filter: Callable = None)

Registers a SheetFollowHyperlink event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_follow_hyperlink
def on_sheet_follow_hyperlink(sheet: object, target: str):
    print("SheetFollowHyperlink fired")

Equivalent to @xl_event("SheetFollowHyperlink").

@xl_event.sheet_pivot_table_update(com_package: str = None, filter: Callable = None)

Registers a SheetPivotTableUpdate event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_pivot_table_update
def on_sheet_pivot_table_update(sheet: object, target: object):
    print("SheetPivotTableUpdate fired")

Equivalent to @xl_event("SheetPivotTableUpdate").

@xl_event.workbook_pivot_table_close_connection(com_package: str = None, filter: Callable = None)

Registers a WorkbookPivotTableCloseConnection event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_pivot_table_close_connection
def on_workbook_pivot_table_close_connection(workbook: object, target: object):
    print("WorkbookPivotTableCloseConnection fired")

Equivalent to @xl_event("WorkbookPivotTableCloseConnection").

@xl_event.workbook_pivot_table_open_connection(com_package: str = None, filter: Callable = None)

Registers a WorkbookPivotTableOpenConnection event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_pivot_table_open_connection
def on_workbook_pivot_table_open_connection(workbook: object, target: object):
    print("WorkbookPivotTableOpenConnection fired")

Equivalent to @xl_event("WorkbookPivotTableOpenConnection").

@xl_event.workbook_sync(com_package: str = None, filter: Callable = None)

Registers a WorkbookSync event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_sync
def on_workbook_sync(workbook: object, sync_event_type: int):
    print("WorkbookSync fired")

Equivalent to @xl_event("WorkbookSync").

@xl_event.workbook_before_xml_import(com_package: str = None, filter: Callable = None)

Registers a WorkbookBeforeXmlImport event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_before_xml_import
def on_workbook_before_xml_import(workbook: object, xml_map: object, url: str, is_refresh: bool, cancel: bool):
    print("WorkbookBeforeXmlImport fired")

Equivalent to @xl_event("WorkbookBeforeXmlImport").

@xl_event.workbook_after_xml_import(com_package: str = None, filter: Callable = None)

Registers a WorkbookAfterXmlImport event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_after_xml_import
def on_workbook_after_xml_import(workbook: object, xml_map: object, is_refresh: bool, result: object):
    print("WorkbookAfterXmlImport fired")

Equivalent to @xl_event("WorkbookAfterXmlImport").

@xl_event.workbook_before_xml_export(com_package: str = None, filter: Callable = None)

Registers a WorkbookBeforeXmlExport event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_before_xml_export
def on_workbook_before_xml_export(workbook: object, xml_map: object, url: str, cancel: bool):
    print("WorkbookBeforeXmlExport fired")

Equivalent to @xl_event("WorkbookBeforeXmlExport").

@xl_event.workbook_after_xml_export(com_package: str = None, filter: Callable = None)

Registers a WorkbookAfterXmlExport event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_after_xml_export
def on_workbook_after_xml_export(workbook: object, xml_map: object, url: str, result: object):
    print("WorkbookAfterXmlExport fired")

Equivalent to @xl_event("WorkbookAfterXmlExport").

@xl_event.workbook_rowset_complete(com_package: str = None, filter: Callable = None)

Registers a WorkbookRowsetComplete event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_rowset_complete
def on_workbook_rowset_complete(workbook: object, description: str, sheet: str, success: bool):
    print("WorkbookRowsetComplete fired")

Equivalent to @xl_event("WorkbookRowsetComplete").

@xl_event.after_calculate(com_package: str = None, filter: Callable = None)

Registers a AfterCalculate event handler. Example usage:

from pyxll import xl_event

@xl_event.after_calculate
def on_after_calculate():
    print("AfterCalculate fired")

Equivalent to @xl_event("AfterCalculate").

@xl_event.sheet_pivot_table_after_value_change(com_package: str = None, filter: Callable = None)

Registers a SheetPivotTableAfterValueChange event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_pivot_table_after_value_change
def on_sheet_pivot_table_after_value_change(sheet: object, target_pivot_table: object, target_range: object):
    print("SheetPivotTableAfterValueChange fired")

Equivalent to @xl_event("SheetPivotTableAfterValueChange").

@xl_event.sheet_pivot_table_before_allocate_changes(com_package: str = None, filter: Callable = None)

Registers a SheetPivotTableBeforeAllocateChanges event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_pivot_table_before_allocate_changes
def on_sheet_pivot_table_before_allocate_changes(sheet: object, target_pivot_table: object, value_change_start: int, value_change_end: int, cancel: bool):
    print("SheetPivotTableBeforeAllocateChanges fired")

Equivalent to @xl_event("SheetPivotTableBeforeAllocateChanges").

@xl_event.sheet_pivot_table_before_commit_changes(com_package: str = None, filter: Callable = None)

Registers a SheetPivotTableBeforeCommitChanges event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_pivot_table_before_commit_changes
def on_sheet_pivot_table_before_commit_changes(sheet: object, target_pivot_table: object, value_change_start: int, value_change_end: int, cancel: bool):
    print("SheetPivotTableBeforeCommitChanges fired")

Equivalent to @xl_event("SheetPivotTableBeforeCommitChanges").

@xl_event.sheet_pivot_table_before_discard_changes(com_package: str = None, filter: Callable = None)

Registers a SheetPivotTableBeforeDiscardChanges event handler. Example usage:

from pyxll import xl_event

@xl_event.sheet_pivot_table_before_discard_changes
def on_sheet_pivot_table_before_discard_changes(sheet: object, target_pivot_table: object, value_change_start: int, value_change_end: int):
    print("SheetPivotTableBeforeDiscardChanges fired")

Equivalent to @xl_event("SheetPivotTableBeforeDiscardChanges").

@xl_event.protected_view_window_open(com_package: str = None, filter: Callable = None)

Registers a ProtectedViewWindowOpen event handler. Example usage:

from pyxll import xl_event

@xl_event.protected_view_window_open
def on_protected_view_window_open(window: object):
    print("ProtectedViewWindowOpen fired")

Equivalent to @xl_event("ProtectedViewWindowOpen").

@xl_event.protected_view_window_before_edit(com_package: str = None, filter: Callable = None)

Registers a ProtectedViewWindowBeforeEdit event handler. Example usage:

from pyxll import xl_event

@xl_event.protected_view_window_before_edit
def on_protected_view_window_before_edit(window: object, cancel: bool):
    print("ProtectedViewWindowBeforeEdit fired")

Equivalent to @xl_event("ProtectedViewWindowBeforeEdit").

@xl_event.protected_view_window_before_close(com_package: str = None, filter: Callable = None)

Registers a ProtectedViewWindowBeforeClose event handler. Example usage:

from pyxll import xl_event

@xl_event.protected_view_window_before_close
def on_protected_view_window_before_close(window: object, reason: int, cancel: bool):
    print("ProtectedViewWindowBeforeClose fired")

Equivalent to @xl_event("ProtectedViewWindowBeforeClose").

@xl_event.protected_view_window_resize(com_package: str = None, filter: Callable = None)

Registers a ProtectedViewWindowResize event handler. Example usage:

from pyxll import xl_event

@xl_event.protected_view_window_resize
def on_protected_view_window_resize(window: object):
    print("ProtectedViewWindowResize fired")

Equivalent to @xl_event("ProtectedViewWindowResize").

@xl_event.protected_view_window_activate(com_package: str = None, filter: Callable = None)

Registers a ProtectedViewWindowActivate event handler. Example usage:

from pyxll import xl_event

@xl_event.protected_view_window_activate
def on_protected_view_window_activate(window: object):
    print("ProtectedViewWindowActivate fired")

Equivalent to @xl_event("ProtectedViewWindowActivate").

@xl_event.protected_view_window_deactivate(com_package: str = None, filter: Callable = None)

Registers a ProtectedViewWindowDeactivate event handler. Example usage:

from pyxll import xl_event

@xl_event.protected_view_window_deactivate
def on_protected_view_window_deactivate(window: object):
    print("ProtectedViewWindowDeactivate fired")

Equivalent to @xl_event("ProtectedViewWindowDeactivate").

@xl_event.workbook_after_save(com_package: str = None, filter: Callable = None)

Registers a WorkbookAfterSave event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_after_save
def on_workbook_after_save(workbook: object, success: bool):
    print("WorkbookAfterSave fired")

Equivalent to @xl_event("WorkbookAfterSave").

@xl_event.workbook_new_chart(com_package: str = None, filter: Callable = None)

Registers a WorkbookNewChart event handler. Example usage:

from pyxll import xl_event

@xl_event.workbook_new_chart
def on_workbook_new_chart(workbook: object, chart: object):
    print("WorkbookNewChart fired")

Equivalent to @xl_event("WorkbookNewChart").

« LRU Cache
PyXLL Add-in Events »
  • Home
  • Product
  • Features
  • Documentation
  • Download
  • Pricing
  • Support
  • Documentation
  • Videos
  • FAQ
  • Learn Python
  • Contact Us
  • About
  • About Us
  • Legal
  • Blog
© Copyright PyXLL Ltd