Sve*_*sli 5 vba ms-word fieldcodes
我有一个带有一些功能的 Word 文档。我想在公式字段中访问这些函数,但这比预期的要难。
假设我有一个函数定义为
Public Function Area(R As Double) As Double
Area = 3.14 * R * R
End Function
Run Code Online (Sandbox Code Playgroud)
并且我想在一个领域中使用它,就像这样
{ = Area(RadiusBookmark) }
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但我收到一个语法错误。如果我省略参数,像这样
{ = Area }
Run Code Online (Sandbox Code Playgroud)
我收到“未定义书签”错误,这让我相信只有书签可用于公式代码字段。
Word 不允许您在字段中使用 VBA 函数。
\n\n一种常见的方法是使用带有 , 的字段DocVariable,并使用一些由按下按钮或文档事件触发的 VBA,将变量的值设置为函数的结果,然后刷新字段值。
DOCVARIABLE首先,向文档添加一个字段:
\n\n\n我的函数返回 \xe2\x80\x98
\nDOCVARIABLE MyFuncResult \\* MERGEFORMAT\xe2\x80\x99!
然后添加这个VBA:
\n\nOption Explicit\n\nPrivate Function Foo() As String\n Foo = "BAR"\nEnd Function\n\nPublic Sub setvar()\n\n Const MYVAR As String = "MyFuncResult"\n\n Dim var As Variable\n\n On Error Resume Next\n Set var = ThisDocument.Variables(MYVAR)\n On Error GoTo 0\n\n If var Is Nothing Then\n Set var = ThisDocument.Variables.Add(MYVAR)\n End If\n\n var.Value = Foo\n\n ThisDocument.Fields.Update\n\nEnd Sub\nRun Code Online (Sandbox Code Playgroud)\n\n您应该看到文档内容为:
\n\n\n\n我的函数返回 \xe2\x80\x98BAR\xe2\x80\x99!
\n