![自动/脚本化将 Normal.dotm 从 Word 2010 格式转换为 2013 格式](https://linux22.com/image/685553/%E8%87%AA%E5%8A%A8%2F%E8%84%9A%E6%9C%AC%E5%8C%96%E5%B0%86%20Normal.dotm%20%E4%BB%8E%20Word%202010%20%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2%E4%B8%BA%202013%20%E6%A0%BC%E5%BC%8F.png)
我想将许多用户从 Office 2010 迁移到 Office 2013。由于我们在 RDP 会话中工作,每个用户的迁移仅包括更改其本地.rdp
文件中的服务器名称。但是,我们的测试用例和在线研究表明,应针对每个用户执行以下操作,最好在首次使用之前:
Normal.dotm
在 Word 2013 中打开用户(或者Normal15pre.dotm
如果您忘记及时执行此操作)- 去文件-转变
- 保存文件回
Normal.dotm
- 做同样的事情
NormalEmail.dotm
有没有办法自动化这个操作,例如通过用户的登录脚本?
答案1
你可以用 PowerShell 做任何事情!例如,以下函数可以打开 Word 文档:
$FileName='C:\Users\UserName\AppData\Roaming\Microsoft\Templates\YourDocument.dotm'
$Word = New-Object –ComObject Word.Application
$Document=$Word.Documents.Open($Filename)
并保存,然后关闭它:
$Document.SaveAs([REF]$FileName)
$Document.Close()
在创建针对您的环境定制的脚本后,您可以添加 Document.Convert 方法,该方法会将该文档转换为最新格式。我自己还没有使用过这种方法,但相信它会像这一行一样简单:
$Document.Convert()
有关使用 PowerShell 操作 Word 文档的更详细示例,请查看这个问题在 Stack Overflow 上。另一个示例可以在 The Scripting Guy 的问答帖子中找到,周末脚本编写者:使用 PowerShell 操作 Word 和 Excel。有关对象模型以及 Document.Convert 方法的文档可以在这里找到在 MSDN 上。
~
话虽如此,您可能要检查的第一件事是用户是否修改了默认文档和电子邮件模板。如果用户修改了,这可能是在整个公司范围内标准化默认格式的机会。如果您不担心覆盖自定义的 Normal.dotm 文件,则可以使用组策略首选项将新模板文件推送到每台计算机。我不会重写这本书,而是向您指出 GP 管理员非常熟悉的博客:GroupPolicy.biz -第 13 周的组策略设置 – 文件。这篇文章展示了在组策略首选项中配置文件推送的位置。当然,即使您仍然转换所有现有的默认模板,您也可以使用此方法部署额外的向用户提供企业模板。
享受!
答案2
添加 RegistryKey:MigrateNormalOnFirstBoot = 1
升级到 Word 2013 后,对 Normal 模板的自定义将丢失
出现此问题的原因是,当您升级到 Word 2013 时,Word 会创建一个新的 Normal.dotm 文件。这样,默认文档模板就会针对 Word 2013 进行优化。
解决
要解决此问题,请在升级 Word 后启动 Word 2013 之前将 MigrateNormalOnFirstBoot 注册表项添加到注册表中。此注册表项可防止 Word 2013 重命名现有或自定义的 Normal.dotm 文件。要添加注册表项,请按照以下步骤操作:
单击“开始”,单击“运行”,在“打开”框中键入 regedit,然后单击“确定”。
找到并单击以下注册表子项:HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\Options
在“编辑”菜单上,指向“新建”,然后单击“DWORD(32 位)值”。键入 MigrateNormalOnFirstBoot,然后按 ENTER。
在详细信息窗格中,右键单击 MigrateNormalOnFirstBoot,然后单击修改。在数值数据框中,键入 1,然后单击确定。退出注册表编辑器。
Word 2013 的行为会根据 MigrateNormalOnFirstBoot 的存在和配置而发生变化。以下部分将更详细地介绍该行为。
从:升级到 Word 2013 后,对 Normal 模板的自定义将丢失
在你的情况下,如果键设置为 1,就会发生这种情况:
当 MigrateNormalOnFirstBoot 设置为 1 时,将出现以下行为:
Word 2013 使用与 Word 2007 和 Word 2010 兼容的现有 Normal.dotm 文件。
答案3
我认为最简单的方法是利用 VBA 以编程方式执行此操作。在内部,“转换”就像“以不同格式保存”一样处理,这意味着您真正需要做的就是:
- 打开文档。
- 执行另存为在所述文档上,指定所需的(在您的情况下是较新的)文件格式。
要通过登录脚本部署此解决方案,我会执行以下操作:
- 创建一个
convert.docm
包含执行以下操作的宏的文件:- 打开
Normal.dotm
- 用途文档.SaveAs2使用当前格式的新副本覆盖该文件。
- 退出词
- 打开
- 配置宏以在打开文档时自动运行。
- 配置您的登录脚本以自动打开文档(
winword.exe convert.docm
)
我几乎没有在 Office 中实现自动化的经验,所以这可能不是您所希望的细节,但它至少应该可以帮助您入门。
不过,我确实想知道有多少用户实际上修改了他们的常规模板。您可能会发现只有少数用户进行了更改,而且单独处理这些用户并使用脚本/组策略将剩余文件批量替换为 Office 2013 的原版版本会更容易。