title image


Smiley Re: es fehlt nur EIN Verweis (auf die Microsoft Forms 2.0 Object Library )
Hi,



der Typ "DataObject" ist in VBA (anders als in VB) in der Microsoft Forms 2.0 Object Library (FM20.DLL) definiert, auf die standardmäßig - beim Erzeugen eines VBA-Projekts - kein Verweis gesetzt ist.



Dieser Verweise wird automatisch beim Einfügen einer Userform erzeugt, weil die genannte Library (auch) die Userform-Objekte bereitstellt.



Um den Typ "DataObject" zum Kompilieren (early-binding) verfügbar zu machen, setze entweder manuell einen Verweis auf die geannnte Library oder aber füge eine (Dummy-)Userform ein und lösche diese gleich wieder - der Verweis bleibt dabei erhalten.



Daneben fehlen in Deinem gepostetet Code noch einige Deklarationen, falls Du (wie dringend ratsam) explizite Variablendeklaration verwendest (Option Explicit):



Dim oData As DataObject, strText As String, Fehler As Long, strFehler As String



Die von Dir genannte "Microsoft Word 11.0 Object Library" gehört zu Word 2003, nicht zu Word 2002 (XP), ist für den genannten Code aber nicht relevant.



Der von Huberts genannte Verweis auf "Microsoft Visual Basic for Applications Extensibility" (VBE) hat mit den Datentypen in Deinem Code überhaupt nichts zu tun und ist hier (wie auch im Normalfall) völlig überflüssig.

Der Sinn und Zweck von Verweisen werden oftmals mißverstanden: Ein Verweis auf eine bestimmte (Objekt- oder Typen-) Biblitothek ist genau dann erforderlich, wenn man Objekte oder Datentypen aus dieser Bibliothek zur Entwicklungszeit und zum Kompilieren verwenden möchte.



Altertativ zur MSForms.DataObject-Methode kannst Du über einfache Windows APIs auf die Zwischenablage zugreifen:



Option ExplicitDeclare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As LongDeclare Function CloseClipboard Lib "user32" () As LongDeclare Function IsClipboardFormatAvailable Lib "user32" (ByVal format As Long) As LongDeclare Function GetClipboardData Lib "user32" (ByVal uFormat As Long) As LongDeclare Function GlobalLock Lib "kernel32" (ByVal h As Long) As LongDeclare Function GlobalUnlock Lib "kernel32" (ByVal h As Long) As LongDeclare Function lstrlen Lib "kernel32" (ByVal p As Long) As LongDeclare Function lstrcpyA Lib "kernel32" (ByVal Dst As Any, ByVal Src As Long) As LongConst CF_TEXT = 1Sub GetClipText()  Dim h As Long, ptr As Long, s As String   If IsClipboardFormatAvailable(CF_TEXT) Then    If OpenClipboard(0&) Then      h = GetClipboardData(CF_TEXT)      If h Then        ptr = GlobalLock(h)        s = String$(lstrlen(ptr), 0)        lstrcpyA s, ptr        GlobalUnlock h      End If      CloseClipboard    End If  End If  MsgBox sEnd Sub



Grüße

Wolfram













geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: