2016-09-07 25 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関数を使用することはできません。

一般的なアプローチの1つは、DocVariableのフィールドを使用して、ボタンの押下またはドキュメントイベントによってトリガされ、変数の値を関数の結果に設定してから、フィールド値。

まず、ドキュメントにDOCVARIABLEフィールドを追加します。

My機能が戻る「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を追加

My機能が戻る「BAR」!

関連する問題