とあるdllをC#とVBからは呼び出せました。
しかし、VBAから呼び出すとエラーになります。
そのdllはexeのあるフォルダにデータファイルを書き込みます。
VBAの場合exeはエクセルなのでエクセルのあるフォルダにデータを書き込もうとしてエラーになっていると思われます。
試しにエクセルのあるフォルダにテキストファイルをコピーしてみたところ、管理者権限を要求されました。
なので、VBAのマクロに管理者権限を設定してやればそのdllを呼べると思います。
どうすれば良いのでしょうか?
あ、そのまえにdllをSystem32とかに置かないとダメっぽいですね?
dllをSystem32に置いてもこんなエラーが出ます。
成功例
VB
1 <System.Runtime.InteropServices.DllImport("test.dll")> 2 Private Shared Function test() As Integer 3 End Function 4 5 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 6 If test() = 0 Then 7 MsgBox("成功です。") 8 End If 9 End Sub
失敗例
VBA
1Private Declare PtrSafe Function test Lib "test.dll" () As Integer 2 3Sub sub1() 4 If test() = 0 Then 5 MsgBox ("成功です。") 6 End If 7End Sub 8
回答1件
あなたの回答
tips
プレビュー