By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,986 Members | 1,193 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,986 IT Pros & Developers. It's quick & easy.

C# VBA DLL issues

P: n/a
[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

May 10 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
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
<te********@gmail.com> wrote in message
news:11**********************@i40g2000cwc.googlegr oups.com...
[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

May 12 '06 #2

P: n/a
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

May 12 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.