【发布时间】:2013-11-03 08:46:24
【问题描述】:
我正在为需要在多个 Word 版本(2003 到 2013,减去 2008)中工作的模板编写代码。我已经接受它不会在所有这些版本中编译。我主要在 Word 2010 中编写代码。到目前为止,我一直能够让它在 2010 年编译,但现在我遇到了一个绊脚石。
我需要使用我定义的特定用户名向文档添加评论。我通过在变量中保存当前用户名和用户首字母来做到这一点,将它们设置为我想要的,添加我的评论,然后重置参数。很简单。但是,在 Word 2013 中,必须设置一个附加参数才能使其正常工作:Application.Options.UseLocalUserInfo。由于 Word 2010 中不存在此功能,因此无法编译。
我认识到这主要是一种不便(我可以注释掉该代码,检查编译问题,然后取消注释)。但我想检查一下是否有更好的、更少麻烦的解决方案。我在跨版本兼容性方面的大部分经验是使用编译器常量和后期绑定,这两者都没有帮助(据我所知)。
基本代码如下。谢谢!
With Application
sDocAuthorName = .UserName
sDocAuthorInitials = .UserInitials
If IsWord2013 = true Then bUseLocal = GetUseLocalUserInfo
End With
With Application
.UserName = sQAAuthorName
.UserInitials = sQAAuthorInitials
If IsWord2013 = true Then .Options.UseLocalUserInfo = True
End With
'Do something
With Application
.UserName = sDocAuthorName
.UserInitials = sDocAuthorInitials
If IsWord2013 = true Then .Options.UseLocalUserInfo = bUseLocal
End With
【问题讨论】:
-
Application.Options.UseLocalUserInfo- 你从哪里得到的?我在THIS LIST 上看不到这个 -
检查THIS。我见过其他人在 VBA 中使用类似的 directive 命令来解释不同的版本。
-
@KazJaw 这很奇怪。根据这个线程 (social.msdn.microsoft.com/Forums/office/en-US/…),它只是没有记录在案。也许是后期添加?我手边没有 2013,但根据链接它在对象浏览器中。
-
@DavidZemens 我很乐意这样做,但我不相信 MS 为 Word 版本提供编译器常量。如果 word 2013 使用不同版本的 VBA,我会被设置,但我认为情况并非如此。我用它们来区分仅 Mac 的代码;真希望他们能添加版本。
-
FWIW 这里有更多关于这个参数的信息(AFAIK 它仍然没有在 MSDN 文档中列出)blogs.msmvps.com/wordmeister/missing-office-documentation/…