- 締切済み
エクセルVBAからCの関数を呼ぶ
エクセルVBAから、VisualC++で書かれた関数を呼びたいのですが具体的な方法を教えてください。VBAでは書きにくい処理をCで書いて、それをエクセルから利用したいと考えてます。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- PrintScree
- ベストアンサー率25% (538/2091)
Public Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long や Declare Function GetEnvironmentStrings Lib "kernel32" Alias "GetEnvironmentStringsA" () As String というWin32APIがあるので、 >文字列を引数で渡して、戻り値を文字列で返す は可能だと思います。 私はDLLは他の言語で作成しているので、Cの場合はどうすればよいかハッキリ言ってわかりません。 C側の関数の引数や戻り値はポインターだとうまくいかないのでは? 手持ちの資料が見当たらないのでこれ以上は分かりません(^^;
- PrintScree
- ベストアンサー率25% (538/2091)
まずは、VC++で書かれた関数のソースからDLLを作成してください。 そしたら、VBAの方でこのように宣言すれば使えるはずです。 Public Declare Sub Sleep Lib "kernel32.dll" Alias "Sleep" (ByVal dwMilliseconds As Long) ※これはWin32APIです。 VC++でDLLの作成方法はご自分で調べてください。
お礼
回答ありがとうございます。Declare で検索してwebからDLLの作成方法を見つけました。引数、戻り値がintの場合には、エクセルからDLLを呼べるようになりました。 ただし、今やりたいのは文字列を引数で渡して、戻り値を文字列で返すということなのですが、この良い例が見つかりません。これについて教えて頂けると助かります。よろしくお願いします。
お礼
補足の回答、ありがとうございます。 これ以上はweb, MSDN等で調べてみます。