5

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

假设我有一个定义为的函数

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

我想在一个领域中使用它,就像这样

{ = Area(RadiusBookmark) }

这看起来很简单,但我得到一个语法错误。如果我省略参数,就像这样

{ = Area }

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

4

1 回答 1

2

Word 不允许您在字段中使用 VBA 函数。

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

首先,DOCVARIABLE在文档中添加一个字段:

我的函数返回 '<code>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'!

于 2016-09-18T08:39:04.147 回答