首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA在Word 2016中编译,但不编译Word 2010

VBA在Word 2016中编译,但不编译Word 2010
EN

Stack Overflow用户
提问于 2017-08-17 00:59:35
回答 3查看 146关注 0票数 3

自从Word 2010以来,MS已经为MS Word引入了一个新特性,即LayoutColumns FootnoteOptions。

因此,以下代码在Word 2016中编译:ActiveDocument.Range.FootnoteOptions.LayoutColumns,而不是Word 2010 (我还没有在Word 2013中进行测试)。

条件编译器语句似乎没有帮助..。除了包含Word 2010的VBA7之外,没有什么可供应用程序版本使用。

https://msdn.microsoft.com/VBA/Language-Reference-VBA/articles/compiler-constants

因此,这不会在Word 2010中编译:

代码语言:javascript
复制
Sub testWd10()
#If Win64 And VBA7 Then
    ActiveDocument.Range.FootnoteOptions.LayoutColumns
#End If
End Sub

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-17 01:17:33

编译器指令帮不了你。您需要确定版本,并使用晚绑定的成员调用,而不是在旧版本的Word。

代码语言:javascript
复制
Sub testWd10()
  If Application.Version > 15 Then 'e.g. 15 is Word 2013, change as necessary
      Dim myRange As Object 'As Range
      Set myRange = ActiveDocument.Range
      myRange.FootnoteOptions.LayoutColumns 'Late-bound call
  End If
End Sub
票数 5
EN

Stack Overflow用户

发布于 2017-08-17 01:38:09

我有点晚了,但很少有更晚的绑定替代方案:

代码语言:javascript
复制
Dim o As Object
Set o = ActiveDocument.Range.FootnoteOptions
On Error Resume Next
o.LayoutColumns = 3
On Error GoTo 0

又短又慢:

代码语言:javascript
复制
On Error Resume Next
CallByName ActiveDocument.Range.FootnoteOptions, "LayoutColumns", vbSet, 3
On Error GoTo 0

或者:

代码语言:javascript
复制
On Error Resume Next
CVar(ActiveDocument.Range.FootnoteOptions).LayoutColumns = 3
On Error GoTo 0
票数 3
EN

Stack Overflow用户

发布于 2017-08-17 01:33:23

不如ThunderFrame的回答好,因为我认为将范围设置为对象可能比整个应用程序更有效,但如下所示:

代码语言:javascript
复制
Sub testWd10()
    Dim wdApp As Object
    Set wdApp = Application

    If wdApp.Version > 14 Then
        wdApp.Documents(ActiveDocument.FullName).Range.FootnoteOptions.LayoutColumns
    End If
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45725089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档