2016-09-07 1 views
2

몇 가지 기능이있는 Word 문서가 있습니다. 수식 필드에서이 함수에 액세스하고 싶지만 예상보다 어려웠습니다.Word 필드 코드에서 VBA 함수를 사용할 수 있습니까?

의이이

{ = Area(RadiusBookmark) } 

이 꽤 똑바로 앞으로 것처럼 내가 필드에이를 사용하려면,하지만 난 구문을 얻을 내가 함수가

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

로 정의하는 것이 있다고 가정 해 봅시다 오류. 나는이

{ = Area } 

처럼 매개 변수를 생략하면 난 단지 북마크 수식 코드 필드에 사용할 수 있다고 생각하는 날 리드에 "정의되지 않은 북마크"오류를 얻을.

답변

0

Word에서는 필드에서 VBA 함수를 사용할 수 없습니다.

일반적인 접근 방법 중 하나는 DocVariable이있는 필드를 사용하고 단추 누름이나 문서 이벤트로 트리거되는 VBA가 있고 변수 값을 함수의 결과로 설정 한 다음 해당 필드를 새로 고치면 필드 값. 먼저

, 문서에 DOCVARIABLE 필드를 추가 :

내 함수가 반환 'DOCVARIABLE MyFuncResult \* MERGEFORMAT'!

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 

을 그리고 당신은 문서 내용을 볼 수 :

다음이 VBA를 추가

내 함수가 반환 'BAR'!