【问题标题】:Set MS Office language programmatically (VBA/VB/API)以编程方式设置 MS Office 语言 (VBA/VB/API)
【发布时间】:2013-12-23 01:29:19
【问题描述】:

MS office 程序具有各种文档和应用特定的语言设置。这不是关于那些。这是关于您通过 Microsoft Office 2010 语言首选项程序或通过调用同一对话框的应用程序内对话框访问的语言设置(例如,查看 | 语言 | Word/PPT 中的语言首选项)。

我正在寻找一种在程序控制下访问相同功能的方法。

为什么?因为当您使用 MS 提供的对话框来更改语言时,MS 会仔细清除您的所有 Outlook 和 Word 自定义(将 Normal.dotm 和 NormalEmail.dotm 文件重命名为 Normal.dotm.old 和 NormalEmail.dotm.old,但不会当您更改回原始语言时,它们似乎无法恢复)。

结果:更改语言会丢失 QuickPart 和其他可能的东西。这是不可接受的。

如果我可以通过自己的工具控制语言设置,我认为首先将现有的自定义设置保存到例如Normal.dotm.1033,如果我当前设置为英语(美国)并且我稍后将语言更改回英语(美国)以将该文件复制回 Normal.dotm,从而恢复我的美国英语自定义。

【问题讨论】:

  • 当然,Office 程序的行为是基于用户不会每天更改其母语的假设。这也是 Application.Language 属性只有 getter 而没有 setter 的原因。这给你的计划打了个洞。当然,您仍然可以备份文件。
  • 我在这里看不到任何与 VB6 或编程有关的东西。看起来像是一个最终用户使用问题。
  • Bob77:“但在程序控制下”IOW,以编程方式。 Hans:Office 的行为似乎基于这样一种假设,即人们永远不会改变语言设置,或者人们不介意在改变语言设置时将其所有自定义设置丢弃。这对我来说似乎是一个不合理的假设。 UI 为用户提供了一种更改默认语言的方法。为什么不应该将其暴露给代码?
  • 有趣的问题。我遵循并排除的一条路径是 xlDialogs 没有在 Excel 下公开语言选项菜单 - 尽管 AdvancedGeneral 选项是

标签: vba winapi vb6 ms-office


【解决方案1】:

我想我已经找到了。对于 Office 2010:

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\LanguageResources

InstallLanguage DWORD 将其值设置为 LangID

当您尽可能使用 Office 语言工具或 Office 应用程序中的对话框更改默认语言时,这就是 reg 中的更改。它还将其更改为以前默认语言的 LangID:

PreviousInstallLanguage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 2011-06-26
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    相关资源
    最近更新 更多