What do I have to do to make my DLL able to be registered

weisscoaching
weisscoaching used Ask the Experts™
on
I have written a DLL in VB (not using MS visual studio)
I intend to use these function in Excel VBA

the code compiles without a problem but I can't register it.
I get the following message the dll was loaded but the entry-point dllRegisterserver was not found.

is there something in the code that I need to add to make this work?
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
If it isn't a COM dll you can't register it.

Author

Commented:
Thank you John.  I agree I wasted time following Kanti's links.

Marcoshadow: OK so I have what I think is a COM dll.  how can I use the Dll via VBA?
OK so I have what I think is a COM dll
Is it or isn't it?

What language is the dll written in?
Ensure you’re charging the right price for your IT

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

Author

Commented:
it is written in VB.

I have never done this before.
I used the editor "Microsoft visual Basic 2008 Express Edition"
I created a new project of type Class library and in it I add a module/class

the code looks like this:
Option Explicit On

Public Class Zakaut_calculations
    Public ReadOnly Property Zakaut_Kids_Point(ByVal NumberOfKids As Integer) As Integer
        Get
            Return Calculate_Kids_Points(NumberOfKids)
        End Get
    End Property

    Public Function Calculate_Kids_Points(ByVal intNumkids As Integer) As Long
        If intNumkids > 0 Then
            Select Case intNumkids
                Case 1
                    Calculate_Kids_Points = 350
                Case 2, 3, 4
                    Calculate_Kids_Points = (350 + ((intNumkids - 1) * 150))
                Case Is > 4
                    Calculate_Kids_Points = (800 + ((intNumkids - 4) * 100))
                Case Else
                    Calculate_Kids_Points = 0
            End Select
        Else
            Calculate_Kids_Points = 0
        End If
    End Function
    Public Sub New(ByVal NumberOfKids As Integer)
        MsgBox("Class started/ended", vbOKOnly, " ")
    End Sub

    Protected Overrides Sub Finalize()
        MsgBox("Class started/ended", vbOKOnly, " ")
        MyBase.Finalize()
    End Sub
End Class
So your dll is written in vb.net, you have to use regasm.exe to register your assembly.

1. Open an elevated command prompt
2. Type the following command:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe C:\Users\MacroShadow\Desktop\Zakaut.dll /tlb:Zakaut.tlb

Open in new window

This is the format you should use, the above is just an example:
[path to regasm.exe] [space] [path to your dll] [space] [/tlb:] [desired name, you can use the dll name] [.tlb]
3. In the VBE add a reference to the tlb file

Author

Commented:
Thanks I have made progress with these instructions.

I am still getting an error that the function I am calling is not defined. but I am at least one or two steps closer than were I was.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial