独自のカスタムvba関数でラップしたいサードパーティのXLLアドインがあります。コードからサードパーティの関数を呼び出すにはどうすればよいですか?
ありがとう
編集:これを行うには少なくとも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
_
詳細については、 このページ を参照してください。
私はこれがかなり遅い答えであることを知っています、しかし私はこの代替方法を発見し、それを共有する価値があると思います。 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