tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
658
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Proggi76 Proggi76 ist offline Grünschnabel
    Registriert seit
    Jul 2005
    Beiträge
    3
    für ein VBA-Projekt benötige ich eine COM-DLL.
    Diese COM-DLL möchte ich nun in VB-Express 2005 erstellen. Hierzu habe ich ein neues Projekt als Klassenbibliothek erstellt und COM-Klasse und COM sichtbar auf true eingestellt. Die Klasse selbst beinhaltet folgenden Code zum Test:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    <ComClass(Test.ClassId, Test.InterfaceId, Test.EventsId)> <System.Serializable()> Public Class Test
        Public Const ClassId As String = "CE95C2CA-30AD-43aa-AAA2-767D24055CAC"
        Public Const InterfaceId As String = "7F88201C-2B41-4f3d-9FB1-6A96E71D74BA"
        Public Const EventsId As String = "E8B2889D-5A0A-4c15-9BFB-76FB4D49D3A1"
     
        Public Sub New()
            MyBase.New()
        End Sub
     
        <System.Runtime.InteropServices.DispId(1)> Public Function callMe() As String
            callMe = "class Test"
        End Function
    End Class

    Muss ich noch was weiter machen, damit es eine "richtige" COM-Dll ist?

    Wie binde ich die dll in einem VBA-Projekt ein?

    Über Verweise hinzufügen erhalte ich die Fehlermeldung: Verweis auf angegebene Datei kann nicht hinzugefügt werden.
    Über Declare Function-Aufruf mit:
    Code :
    1
    
    Public Declare Function callMe Lib "c:.....Test.dll" Alias "Test.callMe" () As String
    gibt's die Fehlermeldung: DLL-Einstiegspunkt nicht gefunden...

    Muss ich noch die dll über VB-Express anpassen, oder funktioniert der Aufruf aus VBA anders?
     

  2. #2
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi

    Hast du die Assembly mit regasm für COM registriert?
    http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx
    Parameter glaub ich /tlb /codebase
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  3. #3
    Proggi76 Proggi76 ist offline Grünschnabel
    Registriert seit
    Jul 2005
    Beiträge
    3
    Den Verweis kann ich nun setzten, jedoch erhalte ich bei Aufruf der Public Function einen Automatisierungsfehler. Gibt's bestimmte Datentypen, die ich verwenden muss oder darf?
     

  4. #4
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi

    Mit Buildin-Typen bist auf jeden Fall auf der sicheren Seite. Was kommt denn genau für ein Fehler?
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison