Можно ли использовать функции VBA в полевых кодах Word?
У меня есть документ Word с некоторыми функциями. Я хочу получить доступ к этим функциям в полях формул, но это оказалось сложнее, чем предполагалось.
Допустим, у меня есть функция, определенная как
Public Function Area(R As Double) As Double
Area = 3.14 * R * R
End Function
и что я хочу использовать это в поле, как это
{ = Area(RadiusBookmark) }
Это кажется довольно простым, но я получаю синтаксическую ошибку. Если я опущу параметр, как это
{ = Area }
Я получаю ошибку "неопределенная закладка", которая заставляет меня поверить, что только поля закладки доступны для полей кода формулы.
1 ответ
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"!