最近要用C++ ATL开发一个Excel插件,需要捕获Excel事件,比如Excel界面上的选定列从A列变成B列,初步计划是先确定事件的dispid,然后用sink接收事件信息,但搜了很多资料,只有提到word、ppt的事件dispid可以在office目录下的*.olb文件里查找,没有提到Excel的,我也没找到关于Excel的*.olb文件。那么请问哪里可以查找到excel事件的dispid?
我想我可能找到了:我在网上看到有高手说excel的类型库不像word和ppt那样放在*.olb里,而是在excel.exe里,于是我用oleviewer打开excel.exe,看到CoClasses下面有些XXXEvents,大概就是那些了
使用Microsoft Excel对象库的API
不知道你这个问题是否已经解决, 如果还没有解决的话:对于Excel的事件dispid,可以在注册表中查找。具体步骤如下:
打开注册表编辑器:在Windows系统中,按下Win + R组合键,输入"regedit"并按下回车键即可打开注册表编辑器。
导航到HKEY_CLASSES_ROOT\TypeLib{00020813-0000-0000-C000-000000000046}这个键下。
在该键下,找到一个或多个子键,每个子键对应一个版本的Excel。根据你的需要选择一个子键。
在选择的子键下,你会看到一个或多个子键,每个子键对应一个语言的版本。根据你的需要选择一个子键。
在选择的子键下,你会看到一个或多个子键,每个子键对应特定的应用程序。选择一个子键后,你会看到它的默认值为Excel应用程序的名称。
在选择的子键下,你会看到一个名为"1.9"的子键。选中该子键,在右边的窗格中会显示事件dispid的列表。
在该窗格中,你可以查看各个事件的dispid。每个dispid都对应一个特定的事件,如SelectionChange、WorksheetChange等。
请注意,以上步骤是在Windows系统上查找Excel事件dispid的方法。如果你使用的是其他操作系统,请自行查找相应的方法。如果你无法找到注册表中的相关键值,请确保已经安装了Excel,如果仍然无法找到,请参考Excel的官方文档或咨询Excel的开发者支持。