如何在VBA模板中使用Word 2013参数并在Word 2010中进行编译

时间:2013-10-24 14:56:39

标签: vba word-vba

我正在为需要在许多Word版本(2003年到2013年,减去2008年)中工作的模板编写代码。我已经接受它不会在所有这些版本中编译。我主要在Word 2010中编写代码。到目前为止,我总是能够在2010年编写代码,但现在我已经遇到了绊脚石。

我需要为具有我定义的特定用户名的文档添加注释。我这样做是通过在变量中保存当前用户名和userinitials,将它们设置为我想要的,添加我的注释,然后重置参数。很简单。但是,在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

1 个答案:

答案 0 :(得分:1)

我没有Word 2013,因此我无法在该环境中进行测试,但我确实拥有Word 2010,如果您使用后期绑定,则此代码会编译:

Sub Foo()
Dim wdApp As Object
Dim IsWord2013 as Boolean
    IsWord2013 = False
    Set wdApp = Application

    If IsWord2013 Then wdApp.Options.UseLocalUserInfo = True


End Sub