C# VBA DLL issues

T

temporalis

[I've also asked this question in
microsoft.public.dotnet.languages.csharp, and
microsoft.public.excel.programming. If there is somewhere else that
may be able to help, please point me in the right direction!]

I've created a DLL in C# (VS2005, using .NET framework 2.0) for use
with Excel XP (to provide some business logic, as well as connectivity
to various components of our business applications). The same DLL is
also to be used with Project 2003. I've created the DLL as COM
Visible, and registered it properly - it works properly in Project
2003, which is what I've been using to test it (thinking that it would
work fine in Excel as well).


My problem is that now when I try to use the DLL from Excel XP, I get
an error on creating a "new" class from the DLL - and because of this,
I can't use any of the classes in the DLL.


For example:
--------------------------------------------------------
public sub tester()
{
dim x as myDLL.myTestClass 'Statement 1
set x = new myDLL.myTestClass 'Statement 2


}


--------------------------------------------------------
Statement 1 executes just fine - intellisense even figures out all the
class members (so if I were to start typing "x.testM", it would figure
out it was "x.testMethod").
Statement 2, however, I get an automation error on - without any
description:
--------------------------------------------------------
"Run-time error '-2146232576 (80131700)':
Automation Error
--------------------------------------------------------

The exact same sub, however, works without any problems at all in
Project 2003. Note that I don't use any Office Interop libraries (This

is a very simple class I created to test this problem, so it basically
has 1 method that sets the only variable in the class, and has a
default myTestClass() constructor), so I don't know why it doesn't work

in XP.


Would anyone be able to help me here? Have I somehow used a COM format

that doesn't work with XP? Does anyhow have an insight that can help?


Thank you in advance!
- Kurtis W. Story
 
B

Bob Eaton

I'm confused because you said "VBA", but then your example sub didn't appear
to be VBA...

I use my C# assembly in VBA, but with the CreateObject statement; not "new"
(but perhaps you're using something newer than I am...)

Dim x as MyDLL.myTestClass
Set x = CreateObject("myDLL.myTestClass")

(I'm not an expert, but...) the other thing to look at would be whether you
can define your C# assembly as AutoDual, I recall about 1000 years ago
(programmer time) that we needed to do that with COM servers being used in
VB(A) script.

Bob
 
T

temporalis

Bob,

Thanks for the reply! I had been trying all of the definitions for the
assembly, but none of them worked. However, I found a solution to the
problem.

While I was not programming an Office "add-in, smart document, or smart
tag", I tried the solution here
http://support.microsoft.com/kb/908002/, and it was able to correct the
issue. This didn't come up when I tried to update Office through
Windows / Office update, which was strange, but now everything works
fine!

I did end up switching to AutoDual in the end, to make other parts work
nice, even though MS doesn't recommend that approach.

Thanks for the help!

- Kurtis W. Story
 

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