やりたいことC#で作成したDLLの関数をVBAで呼びたいと思っております。
条件として、作成DLLはExcelブックの同階層に存在していて、
VBAから呼ぶときに作成DLLを読み込んで呼ぶようにしたいです。
作成物
・環境:VisualStudio2017
・プロジェクトテンプレ:C# クラスライブラリ(.NET Framework)
C#
1public static class Class1 2{ 3 //================================================== 4 // VBAで呼びたい関数A 5 public static void MR_AAA(string str_Path) 6 { 7 // テストA 8 「引数:str_Path」を使った処理A; 9 } 10 //================================================== 11 // VBAで呼びたい関数B 12 public static void MR_BBB(string str_Path) 13 { 14 // テストB 15 「引数:str_Path」を使った処理B; 16 } 17 18}
上記の内容のプロジェクトをビルドして「テスト.dll」というファイルを作成しました。
Exelから呼び出す際に、現状は
VBA
1Declare Function DllFunctionA Lib "一覧作成補助.dll" Alias "Class1.MR_AAA" (str_Path As String) 2Declare Function DllFunctionB Lib "一覧作成補助.dll" Alias "Class1.MR_BBB" (str_Path As String) 3 4Public Sub MR_CallMakeTrigFiles() 5 ChDrive ActiveWorkbook.Path 6 ChDir ActiveWorkbook.Path 7 call DllFunctionA("set") 8End Sub
上記の呼び方で呼んでみたのですが
「エントリ Class1.MR_AAA がDLLファイル テスト.dll 内に見つかりません」
というエラーが出てしまいます。
DllFunctionA,Bの定義の仕方に問題があると思うのですが、
DLL内の指定クラスの指定関数を定義する方法が分かりません。
お手数をおかけしますが、よろしければご教示ください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/17 07:27