前提・実現したいこと
ExcelVBAでアドイン化した関数をVBAのFunctionプロシージャ内で記述しExcelシート上で使用したいと考えています。
Excelリボン上でそのアドインを選択した状態で関数名をそのままVBAのFunction内コードにそのまま記述しています。(おそらくこれが問題)
アドイン化した関数とは
- C++言語でdll(関数)を作成し、Excelでシート上で呼び出せるようにしたものです。
- Excelのリボン上からこのアドインをチェックし、シート上での呼び出しは、問題なくできています。
発生している問題・エラーメッセージ
Excelシート上で作成したFunctionプロシージャを使うと以下のエラーが発生します。
コンパイルエラー:SubまたはFunctionが定義されていません
試したこと
- Excelシート関数もVBAで使うときには指定書式があったと思うので、今回もそれが問題かと思い調べようとしましたが、解決方法を見つけられませんでした。
- VBAの参照設定で当該アドインを参照設定しようとしたら、以下のエラーがでました。
この名前は既にあるモジュール、プロジェクト、オブジェクトライブラリで使われています。
以上の状況で先に進めておりません。何かアドバイスいただけると幸いです。
https://www.wareko.jp/blog/explanation-of-excels-add-in-vba-com-excel-dna-xll の記事が参考になるのではないでしょうか?
どんなコードを書かれたのか判りませんので、助言はできかねます。
質問がピンと来なくて念のための確認ですが
「C++で作成したアドイン内の関数(シート上でワークシート関数として使用できる)を、VBA内で使用したい」ということですか?
そういった経験は無いのでできるかも?程度の話ですが
ExcelのCOM APIのEvaluate()メソッドは、文字列の数式を解釈して結果を計算するため
「C++で作成したアドイン内の関数」を使う数式の文字列をVBAで組み立てれば使えるかもしれません。
DLLがどんな物かにもよりますが、C言語としての関数インターフェイスを公開していれば、Windows APIと同じようにDeclareで参照出来るかもしれません。
コメントありがとうございます。
参考になりそうな感じです。
その一方で、自分の頭の中の整理をして、うまくできなかったら具体的なコードを準備して再質問しようと思います。
あなたの回答
tips
プレビュー