我在MS Word 2007功能区中创建了一个自定义选项卡。选项卡及其所有功能正常工作,并保存在启用宏的模板中。但是,在基于此模板创建新文档后,将其保存为普通Word文档或启用宏的文档,然后关闭它:当我重新打开此文档文件时,自定义选项卡自身重复!
由于这是在严重锁定的计算机和网络上开发的,因此我可以使用的工具相当有限。我仅限于XML方面的自定义UI编辑器工具和VBA。我已经包含了创建工具栏的XML的开头。如果使用限定选项卡ID,则选项卡内容在同一选项卡中重复。如果使用不合格的选项卡名称,则整个选项卡将在功能区中复制自身。
我完全失去了这个。自定义工具栏的两个实例都可以正常工作 - 这只是其中两个实例,很多人都会使用这个模板!
<?xml version="1.0" encoding="UTF-8" standalone ="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="rxTabCompanyName"
label="Company Name Toolbar"
insertBeforeMso="TabHome"
tag="CompanyNameToolbarTag">
<group id="rxgrpCompanyNameReportStyles"
label="Report Text Styles">
<box id="rxboxStyleX"
boxStyle="horizontal">
<menu id="rxmnuAllStyles"
label="All Styles"
supertip="List all styles"
showLabel="true"
image="AtkStyles"
size="normal">
等...
我们非常感谢任何建议。
答案 0 :(得分:0)
我认为您的问题是因为您基于模板(* .dotx或* .dotm)创建了新文档,并且模板包含功能区XML以显示功能区选项卡。新文档还将包含相同的XML,并将显示它自己的功能区选项卡版本。
我建议您创建两个模板文件:
包含功能区XML和响应用户操作,加载列表等所需的任何代码的文件。将此模板复制到Office安装的STARTUP文件夹中。
第二个只是一个没有任何代码或功能区的空白dotx,但带有你想要的外观和内容。
根据第二个模板创建新文档。
答案 1 :(得分:0)
您是否在不同版本的MS-Word中打开并创建了新文档。我已经看到,如果模板是在早期版本中创建的,则使用MS-Word 2010会发生重复。
我已对功能区命名空间添加了一个额外的引用,以便在2007或2010中加载功能区:
customUI xmlns =“http://schemas.microsoft.com/office/2009/07/customui”
而不是:
customUI xmlns =“http://schemas.microsoft.com/office/ 2006/01 / customui
Ron de Bruin的提示解释了Excel的类似问题: http://www.rondebruin.nl/ribbonx20072010.htm
答案 2 :(得分:0)
您是否正在基于“dotm”模板创建新文档?或者您打开“docm”文件(用作模板)并以新名称保存吗?
与Excel不同,Word会将新文档链接到其模板,因此当基于模板(dotm)时,功能区不会复制到新的“实例化”文档。
如果您使用“docm”文件作为模板,则(文档级别)功能区将被复制到“已保存为”文件。
这可能不是正在发生的事情,但这是可能的。
答案 3 :(得分:0)
是否找到了解决此问题的解决方案,因为我遇到了同样的问题,即我的.docm仍然包含customui?
我对word文档和模板的理解是文档(.docx和docm)不包含功能区自定义,而模板(.dotx&amp; .dotm)不包含功能区。
我使用了customui编辑器来删除自定义,但仍想知道为什么这个特定的宏启用文档保留了自定义选项卡,因为如果我使用全新模板测试这种情况,所有后续文档都不包含customui
答案 4 :(得分:0)
同样的问题......我不知道它什么时候发生。但我想分享我的解决方法来修复大量文件。它是一个Little vba脚本,用于删除目录中每个文件中的(加倍的)自定义功能区。确保.dotm文件不在目录中!
Private Sub remover()
Dim re As String
Dim docdir As String
Dim fs As Object
Dim fVerz As Object
Dim docFiles As Object
Dim docFile As Object
Dim wdApp As Object
Dim wdDoc As Object
docdir = "C:\your\destination\path"
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.getFolder(docdir)
Set docFiles = fVerz.Files
'loop all files
For Each docFile In docFiles
If InStr(docFile, "") > 0 Then
re = Shell("zip """ & docFile & """ -d ""*customUI.xml""", vbNormalFocus)
End If
Next docFile
End Sub