使用 COM 加载项替换 Excel XP 中的“打开文件”对话框
我正在为 Excel XP 开发一个 C# 插件,我需要使用自己的对话框处理文件打开和保存事件。我设法通过(基本上)在 Excel 应用程序对象上传递 WorkbookBeforeSave 事件并取消默认行为来完成此保存。有一个 WorkbookOpen 事件,但该事件在打开文档后触发,而不是在用户单击“打开”按钮或按 Ctrl-O 时触发。
这是一个类似的问题,尽管该解决方案适用于更高版本的 Office,对我不起作用: 在 COM 加载项中替换 Word 的“打开文件”对话框
我无法简单地自定义普通的“文件打开”对话框 - 我需要完全替换它。有什么想法吗?
I am working on a C# add-in for Excel XP for which I need to handle file open and save events with my own dialogs. I managed to do this for save by (basically) handing the WorkbookBeforeSave event on the Excel Application object and cancelling the default behaviour. There is a WorkbookOpen event, but it is fired after a document has been opened, not when the user clicks the Open button or presses Ctrl-O.
Here is a similar question, though the solution is for later versions of office and won't work for me: Replacing Word's Open File Dialog in a COM Add-in
I cannot simply customise the normal File Open dialog - I need to replace it entirely. Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一种有点古怪的方法是从 Excel 的 com 接口接收 WindowActivate 事件(对于 excel10 为 dispID 0x614)。然后跟踪最后一个 hwnd 并观察它何时发生变化。如果是excel doc窗口(我想你可以使用spy++来找出excel窗口名称)
One somewhat hacky way would be to sink the WindowActivate event from Excel's com interface (dispID 0x614 for excel10). Then keep track of the last hwnd and watch for when it changes & if it is the excel doc window (I think you can use spy++ to find out the excel window names)