是否可以在Word字段代码中使用VBA功能?

时间:2016-09-07 08:34:02

标签: vba ms-word word-vba fieldcodes

我有一个带有一些功能的Word文档。我想在公式字段中访问这些函数,但这比预期的要困难。

假设我有一个定义为

的函数
Public Function Area(R As Double) As Double
  Area = 3.14 * R * R
End Function

我希望在一个字段中使用它,比如

{ = Area(RadiusBookmark) }

这看起来非常简单,但我收到语法错误。如果省略参数,就像这样

{ = Area }

我收到“未定义的书签”错误,这让我相信只有书签可用于公式代码字段。

1 个答案:

答案 0 :(得分:0)

Word不允许您在字段中使用VBA功能。

一种常见的方法是使用具有DocVariable的字段,并且具有由按钮按下或文档事件触发的一些VBA,其将变量的值设置为函数的结果,并且然后刷新字段值。

首先,在您的文档中添加DOCVARIABLE字段:

  

我的函数返回'DOCVARIABLE MyFuncResult \* MERGEFORMAT'!

然后添加此VBA:

Option Explicit

Private Function Foo() As String
  Foo = "BAR"
End Function

Public Sub setvar()

  Const MYVAR As String = "MyFuncResult"

  Dim var As Variable

  On Error Resume Next
  Set var = ThisDocument.Variables(MYVAR)
  On Error GoTo 0

  If var Is Nothing Then
    Set var = ThisDocument.Variables.Add(MYVAR)
  End If

  var.Value = Foo

  ThisDocument.Fields.Update

End Sub

您应该将文档内容视为:

  

我的函数返回'BAR'!