Hi,
I tried the basic example for win32com.client to just record how many times
events have been fired? I want to test which event types would be fired by
addition to self.seen_events dictionary. self.event_methods_hash get all
available events definition name ('OnWorkbookOpen',' OnWorkbookAfterSave',
etc..). While all user_event_class definitions do a similar task I wonder
how to add all available definitions programmatically?
class ExcelEvents: ##
def __init__(self):
self.seen_events = {}
self.event_methods_hash = self._dispid_to_func_
def init_events(self,key_):
if key_ not in self.seen_events.keys():
self.seen_events[key_] = 0
else:
self.seen_events[key_] += 1
def OnWorkbookOpen(self, *args):
key_ = "OnWorkbookOpen"
self.init_events(key_)
def OnWorkbookAfterSave(self,*args):
key_ = "OnWorkbookAfterSave"
self.init_events(key_)
event_names = ["OnWorkbookOpen"]
wait_time = 1
import win32com.client as win32
excel # => <win32com.gen_py.Microsoft Excel 16.0 Object
Library._Application instance at 0x1550605301240>
excel.Visible = True
excel_events = win32.WithEvents(excel, ExcelEvents)
f_path_out = 'HHW_last_out.xlsx'
try:
book = excel.Workbooks.Open(f_path_out)
book_autorecover_status = book.EnableAutoRecover
book.EnableAutoRecover = False
book.Save()
book.EnableAutoRecover = book_autorecover_status
except Exception as e:
print("Something Wrong")
print(e)
else:
print("Finished Properly")
print(excel_events.seen_events)
finally:
excel_events.close()
Thanks
Khanh Ng
_______________________________________________
python-win32 mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-win32