【发布时间】:2018-05-31 15:05:38
【问题描述】:
不是重复的,因为尽管已按照Excel renaming Activex Controls on other computers 和其他地方的答案中的建议删除了 *.exd 文件,但此处描述的问题仍然存在。
我们网络上的一台特定机器(我们称其为“计算机 2”)以虚假且无声的方式更改 Excel 工作簿中的 ActiveX 命令按钮的代号。无论按钮的 (Name) 属性以前是什么,它都会将其返回到默认的 CommandButton* 方案。 (CommandButton1、CommandButton2...等)
请看下面的截图。 btn2 在计算机 2 上打开时,代码名称变为 CommandButton1。
为什么?我该如何解决这个问题?
我什至可以在两台机器上同时从网络驱动器上的同一个 Book1.xlsm 文件打开完全相同的工作簿(其中一台显然是只读的)。同时看两个屏幕,按钮名称不一样!计算机 2 改变了它。
这当然会破坏按钮的功能,因为它们不再触发预期的事件代码。在下面的示例中,btn2 用于从 sheet 模块调用 Private Sub btn2_Click() 并执行该 Sub 中的代码。但是在计算机 2 上,该按钮不再命名为 btn2,因此它不会触发该事件;它什么都不做——或者更糟的是,如果之前碰巧有一个名为 CommandButton1 的按钮,它会触发那个不相关的事件。
在计算机 1 上打开的工作簿:
完全相同的工作簿,但这次是在计算机 2 上:
现在,我以前也遇到过这种情况。多年来,在几台不同的机器上,我所有的命令按钮都像这样重命名了一次或两次。但我从来没有能够重现这一点,我想,损坏的工作簿,没什么大不了的。
但这在计算机 2 上始终如一地发生,每一次。
非 ActiveX 表单控件按钮,例如上例中的“表单按钮 1”,不受此问题的影响。一个明显但乏味的解决方法是去掉我所有的 ActiveX 按钮(如this answer 中所建议的那样)并将它们转换为例如表单控制按钮,但目的是避免这种核选项。
【问题讨论】:
-
你能发布用于创建按钮的代码吗?您可以尝试从计算机 2 中删除 msforms 吗?只是一些尝试,它不会伤害任何东西。 stackoverflow.com/questions/27411399/…
-
@99moorem:我知道:stackoverflow.com/a/27500258/119775 不幸的是,不是这样。没有使用代码来创建按钮;我只是从 Developer > Insert 手动添加它们。
-
@Jean-FrançoisCorbett Certain MS security updates may cause such harm.。你能检查机器的最新更新吗?它是否运行与其他机器相同的软件更新映像?规格一样吗?操作系统、MS Office 版本等?还要检查 Excel 是否正在创建新控件,而不是重命名您刚刚更改的内容。
-
Here's another post on the subject.。不过,我并不打算进行近距离投票。
-
@bonCodigo:这不是重复的,因为尽管应用了建议的修复程序in that answer 并且我已经知道了,但仍会出现问题。关闭的投票总是可以撤回...
标签: vba excel excel-2010 activex