爱疯提了个好问题,之前一直没有细想。经爱疯提醒,我做了如下的试验。 先来看CommandBars CommandBars 属性 返回 CommandBars
对象,该对象代表 Microsoft Excel 命令栏。只读。 同 Application
对象一起使用。本属性返回所有对该应用程序有效的内置及自定义命令栏。 这里的工具栏是依附于Application的,就是当前Application的工具栏。 我们可以同时打开两个Excel程序(开始-〉程序里面打开),然后在其中一个程序里的表格里面运行以下代码: Sub a() Dim c As CommandBar For Each c In CommandBars c.Enabled = 0 Next c End Sub 然后再分别看两个Excel程序的菜单,我们看到什么?两个是不是不一样?其实,两个程序其实是分别独立的。在这种情况下,Application下的Commandbars也是独立的。 然后再来看看COMAddIns COMAddIns 集合对象 参阅属性方法事件特性 COMAddIn
对象的集合,它提供有关在 Windows 注册表中注册的 COM 加载项的信息。 使用 COMAddIns 集合 用 Application
对象的 COMAddIns
属性返回 Microsoft Office 宿主应用程序的 COMAddIns
集合。 这个COMAddIns也是在Application之下的,同样可以采取上述的操作打开两个Excel程序,在其中一个程序里面运行如下代码: Sub 按钮1_Click() '去除加载项特殊符号 Application.COMAddIns("OfficeSymbol.Connect").Connect = False End Sub 看到什么效果?没有运行过这个代码的程序依然有插入特殊符号这个菜单项。这两个Excel程序是分别独立的。 那么怎么样才能让上述代码达到效果呢?我们用前一个CommandBars的例子。然后给两个程序分别命名为E1(有菜单栏的)和E2(没有菜单栏的),确保当前没有其它Excel程序打开,然后采取以下操作。 情形一:先关闭E1,再关闭E2,然后再重新打开Excel,看到了么?菜单栏消失了。 情形二:先关闭E2,再关闭E1,然后再重新打开Excel,看到了么?菜单栏还在。 然后我们恢复菜单栏,单独打开一个Excel文件,运行那个a代码,然后关闭Excel,再次打开Excel,可以看到菜单栏消失了。 在COMAddIns中也可以看到同样的情形。 鉴于上述结果,可以看到其实上面的代码其实起了作用,但是运行了上述代码后系统其实并没有保存最后的设置。通过上面的试验,可以猜到,其实系统会保存这个设置,是在这个程序最后关闭的时候保存的。这个设置其实保存在一个XLB文件中,这个文件的位置是C:\Documents and Settings\用户名\Application Data\Microsoft\Excel 其中,【用户名】代表您计算机上的登录名。对于Excel 2003来说,该文件名为Excel11.xlb。 那么,我们再回到最初的问题:a代码在不重装或修复excel的情况下,改值为1,是唯一恢复的方式么,即有手工或其他办法么? 其实删除上面这个XLB文件就行了。重新打开Excel的时候,系统会自动再按默认配置重建一个。
[此贴子已经被作者于2010-2-10 9:53:09编辑过] |