Using c# object in Excel VBA

M

Michael

Hi All
I have writen an COM Object in C# to use it in Excel. This Object has a
Function that delivers a List of Users from a Database. My problem is now
that I get the List of Users but it is not posible to get one of the
Properties of the User. But when I create a new Object with
Set user = CreateObject("GuptaIntferface.UserVOCom")
I can see all Properties of this object. My Question is now how can I tell
VBA now that the objects in the List are the UserVOCOM Objects?
thx for help
Michael
 
J

JLatham

I'm kind of stabbing the dark on this one as I've never worked with a C#
object. But have you tried:
msgbox user.propertyname
which would print the value of the propertyname you provide in a message box
on screen. Just put that line right after your Set user = CreateObject(....)
statement and give it a go.

I say that I'm stabbing at it, because that's the way you'd reference a
property in a typical object as:
Set myRange = Range("B1:B9")
msgbox myRange.Rows.Count
would show a 9.

If user is a list you may have to reference the item in the list as:
msgbox user(1).propertyname
 
M

Michael

thx for the Results
@Tim: Yes I allready added the reference
@JLatham: I had the some Idea like you with user(1).propertyname but then I
get the Error Message Runtime Error 424 Object necessary

I tried the following lines and all lines failed :(
user2 = Users(i)
objSheet.Range(cell).Value = Users(i).UserName
objSheet.Range(cell).Value = user2.UserName
thx for Help Michael

Here is my complete Code:

Sub Schaltfläche2_BeiKlick()
Set obj = CreateObject("GuptaIntferface.Wrapper")
Set objSheet = Worksheets("Tabelle1")
UserName = objSheet.Range("B1").Value
Password = objSheet.Range("B2").Value
workspace = objSheet.Range("B3").Value
mandant = objSheet.Range("B4").Value
resultnix = obj.InitWrapper(UserName, "", workspace, mandant)
resultnix = obj.RegisterHostaddress("Ibs.Infrastructure",
"http://localhost/Infrastructure.Host/")
result = obj.Test()
Users = obj.GetUserList()
Set user = CreateObject("GuptaIntferface.UserVOCom")
MsgBox user.UserName
For i = 1 To UBound(Users)
cell = "B" + CStr(i + 10)
user2 = Users(i)
objSheet.Range(cell).Value = Users(i).UserName
objSheet.Range(cell).Value = user2.UserName
Next i
MsgBox result
End Sub
 
M

Michael

one more Info it looks like he has a Problem with the Array
when I use a c# like this
public UserVOCom[] GetUserList()
VBA can't read the the Objects in the List but when I use
public UserVOCom GetUser()
he can read the properties from this object
Any Ideas on this?
thx
Michael
 
M

Michael

Hi All I have found a Solution! VBA can't handel a normal Array from C#! So I
have build a Class that handels the List and offers the Values via a get and
a set function

but thx again for the help

Michael
 

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