calling C# DLL from VBA

P

Paul

Dear all,

I am very new to microsoft programming world and would definitely need
help. I tried created a C++ DLL and I can call it from Excel VBA, and
it works well.

Now I am trying to create a C# DLL, I can compile the DLL but I can't
call it from my Excel VBA. Everytime when I invoke the VBA macro it
complains the entry point of the DLL is not found. Are there something
missing during my DLL compilation step??

I remember that I have to define the "functions to be exposed" in a DEF
files for the C++ Linker. Do I have to do something similar for C#?

Thanks a lot.

Paul
 
D

Dave Patrick

Seems strange you would ask a C# question here rather than
http://www.microsoft.com/communitie...6e4-26ee-47ae-bf53-9380538fa8a9&lang=en&cr=US

I'd run depends.exe against the DLL to see what functions are exposed.

--

Regards,

Dave Patrick ....Please no email replies - reply in newsgroup.
Microsoft Certified Professional
Microsoft MVP [Windows]
http://www.microsoft.com/protect

:
| Dear all,
|
| I am very new to microsoft programming world and would definitely need
| help. I tried created a C++ DLL and I can call it from Excel VBA, and
| it works well.
|
| Now I am trying to create a C# DLL, I can compile the DLL but I can't
| call it from my Excel VBA. Everytime when I invoke the VBA macro it
| complains the entry point of the DLL is not found. Are there something
| missing during my DLL compilation step??
|
| I remember that I have to define the "functions to be exposed" in a DEF
| files for the C++ Linker. Do I have to do something similar for C#?
|
| Thanks a lot.
|
| Paul
|
 
P

Paul

Thanks. I believe that's not purely a C# problem, since I am not sure
whether I have done something wrong with my excel VBA code too...

I have created the C# component, my code is looking like this:

public class Class1 {
public Class1() {
}
public int TestMethod(int i, int j) {
return i + j;
}
}

and I compiled using Visual studio for C# 2005 (.NET 2.0) with the
"Register for COM interop" option and have the ComVisible(true)
assembly attribute set.

Then I have set the reference to "testdll.tlb" in my Excel VBA
environment.
And my VBA code here

Sub test()
Dim a As testdll.Class1
Set a = New testdll.Class1
End Sub


The problem is.. everytime when I run the macro it complains at the 2nd
line of my VBA code:

"File or assembly name testdll, or one of its dependencies, was not
found."


I spent a day but still unable to figure out which step I was
missing....

If anyone know the answer, please help~~~~

Thank you very much.

Paul
 
D

Dave Patrick

That's a different error than you originally posted. Still a question for
the C# group. Try depends.exe or possibly one of these may help.

http://www.google.com/search?hl=en&...of+its+dependencies"+not+found+C#&btnG=Search

--

Regards,

Dave Patrick ....Please no email replies - reply in newsgroup.
Microsoft Certified Professional
Microsoft MVP [Windows]
http://www.microsoft.com/protect

:
|
| Thanks. I believe that's not purely a C# problem, since I am not sure
| whether I have done something wrong with my excel VBA code too...
|
| I have created the C# component, my code is looking like this:
|
| public class Class1 {
| public Class1() {
| }
| public int TestMethod(int i, int j) {
| return i + j;
| }
| }
|
| and I compiled using Visual studio for C# 2005 (.NET 2.0) with the
| "Register for COM interop" option and have the ComVisible(true)
| assembly attribute set.
|
| Then I have set the reference to "testdll.tlb" in my Excel VBA
| environment.
| And my VBA code here
|
| Sub test()
| Dim a As testdll.Class1
| Set a = New testdll.Class1
| End Sub
|
|
| The problem is.. everytime when I run the macro it complains at the 2nd
| line of my VBA code:
|
| "File or assembly name testdll, or one of its dependencies, was not
| found."
|
|
| I spent a day but still unable to figure out which step I was
| missing....
|
| If anyone know the answer, please help~~~~
|
| Thank you very much.
|
| Paul
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top