症状
Microsoft Excel 在单元格编辑模式下加载自动化加载项时,Excel 会失败。 此问题仅发生在已按需加载到 Excel 中的自动化加载项中。
原因
如果加载项显示窗体或对话框,或者外接程序向 Excel 发出尝试更改 Excel 状态的自动化请求,则加载加载项时,可能会出现此问题。 以下列表包含的自动化请求示例可能会导致在单元格编辑模式下加载自动化加载项时调用 Excel 失败:
-
以编程方式更改当前所选内容。 例如:
Application.ActiveSheet.Range("A1").Select -
调用 Windows 集合中项的属性或方法。 例如:
Application.ActiveWindow.Zoom = 200
-
更改 Excel 设置,例如计算模式。 例如:
Application.CalculationMode = xlManual
所有这些项都是尝试更改 Excel 环境、工作簿或工作表的代码示例;在编辑模式下,不允许使用这些类型的操作。
解决方法
加载加载项时不要尝试上述操作。 加载期间调用的外接程序方法包括 Initialize 方法,如果自动化加载项实现 IDTExtensibility2 接口,则还包括 OnConnection 和 OnStartupComplete 方法。
状态
Microsoft已确认这是本文开头列出的Microsoft产品中的 bug。
更多信息
重现问题的步骤
-
在 Visual Basic 中启动新的 ActiveX DLL 项目。
-
在“项目”菜单中,单击“Project1 属性”。 将“项目名称”更改为 TestAddIn,然后单击“确定”。
-
将以下代码添加到 Class1 的代码模块:
Private Sub Class_Initialize() MsgBox "Class_Initialize"End Sub
-
生成 TestAddIn.dll。
-
在 Excel 中,启动新工作簿。
-
在 Microsoft Office Excel 2003 或 Microsoft Excel 2002 中,请执行以下步骤:
-
在 “工具 ”菜单上,指向“ 加载项”,然后单击“ 自动化”。
-
在列表中,单击“ TestAddIn.Class1”,然后单击“ 确定”。
-
在“ 加载项 ”对话框中,单击“ 确定”。
在 Microsoft Office Excel 2007 中,请执行以下步骤:
-
单击 “Microsoft Office 按钮”,然后单击“Excel 选项”。
-
单击“ 加载项 ”选项卡。
-
在 “管理 ”列表中,单击“ Excel 加载项”,然后单击“ 转到”。
-
在“ 加载项 ”对话框中,单击“自动化”。
-
在列表中,单击“ TestAddin.Class1”,然后单击“ 确定”。
-
单击“确定”。
-
-
在任何单元格中键入 =a。 将显示一个文本为“Class_Initialize”的消息框。
-
单击“确定”关闭消息框。 几秒钟后,Excel 会失败。
参考
有关其他信息,请单击下面的文章编号以查看Microsoft知识库中的文章:
291392 信息:Excel COM 加载项和自动化加载项