web-dev-qa-db-ja.com

vbaからxllアドイン関数を呼び出すにはどうすればよいですか?

独自のカスタムvba関数でラップしたいサードパーティのXLLアドインがあります。コードからサードパーティの関数を呼び出すにはどうすればよいですか?

ありがとう

17
Dane O'Connor

編集:これを行うには少なくとも2つの方法があります:


オプション1:Application.Run(...)

引数はXLL関数に送信される前に自動的に適切な型に変換されるため、これは最善の方法のように見えます。

_Public Function myVBAFunction(A as Integer, B as String, C as Double)
    myVBAFunction = Application.Run("XLLFunction", A, B, C)
End Sub
_

詳細については、 このページ を参照してください。


オプション2:Application.ExecuteExcel4Macro(...)

このメソッドでは、引数をXLL関数に渡す前に、引数を文字列形式に変換する必要があります。

_Public Function myVBAFunction(A as Integer, B as String, C as Double)
    dim macroCall as String
    macroCall = "XLLFunction(" & A
    macroCall = macroCall & "," & Chr(34) & B & Chr(34)
    macroCall = macroCall & "," & C
    macroCall = macroCall & ")"
    myVBAFunction = Application.ExecuteExcel4Macro(macroCall)
End Sub
_

詳細については、 このページ を参照してください。

25
e.James

私はこれがかなり遅い答えであることを知っています、しかし私はこの代替方法を発見し、それを共有する価値があると思います。 Win32呼び出しと同じ方法で、サードパーティの関数を宣言できます。これには、コーディング時にIntellisense補完に表示されるという追加の利点があります。

Private Declare Function XLLFunction Lib "C:\PathTo3rdPartyDLL\3rdParty.xll" (ByVal A as Integer, ByVal B as String, C as Double) As Double

Sub Function myVBAFunction(A as Integer, B as String, C as Double) as Double
    myVBAFunction = XLLFunction(A, B, C)
End Sub
15
CuberChase