vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Ah, habe es wieder gefunden 
Autor: Blackbox
Datum: 16.01.16 17:02

Hallo,

nochmals zu meinem Vorschlag: Das als COM-Addin zu machen zurück.
Damals hatte ich ein COM-Addin VSTO für Outlook zu machen. Einige Dinge wurden da via
dem Addin mittels einem Timer gemanagt. VBA sollte dabei überprüfen können, wann der letzte
Zugriff des Timers erfolgt ist. Also musste eine Methode eines Interfaces offengelegt werden.

Obwohl das in .NET geschrieben ist, hier ist der Code, wie das passiert ist:

Imports System.Timers
Imports System.Data
Imports System.Runtime.Interopservices
Imports Outlook = Microsoft.Office.Interop.Outlook 'hier natürlich ACCESS!
 
'Das COM Interface definieren
<ComVisible(True) _
Public Interface ILastAccess
    Function GetLastAccess() As String 'es müssen nur die Member des Interface 
    ' genannt werden
End Interface
 
<ComVisible(True)> _
<ClassInterface(ClassInterfaceType.None)> _
'Jetzt die Klasse, die für VBA veröffentlicht wird
 
Public Class MyAppTimer
     Inherits System.Timers.Timer
     Implements ILastAccess
 
     Private m_App AS Outlook.NameSpace 'hier Access-App evtl
     Private Shared m_LastAccess As String
 
     Public Property LastAccess As String
         Get
              Return m_LastAccess
         End Get
         Set( Value As String )
              m_LastAccess = Value
         End Set
      End Property 
 
      Public Property OutlApp As Outlook.NameSpace
         Get 
              Return m_App
         End Get
         Set( Value As Outlook.NameSpace )
              m_App = Value
         End Set
      End Property
 
      'ok jetzt das was VBA "sehen" kann:
      Public Function GetLastAccess() As String Implements _
        ILastAccess.GetLastAccess
           Return m_LastAccess
      End Function
End Class 
 
'Das war die COM-Klasse für VBA
 
'Innerhalb der Dll muss noch innerhalb von ThisAddIn eine Funktion 
' überschrieben werden
 
Public Class ThisAddin
     Private m_Timer As MyAppTimer
 
     Protected Overrides Function RequestComAddInAutomationService() As Object
          If m_Timer Is Nothing Then m_Timer = New MyAppTimer
          Return m_Timer
     End Function
 
     'ab hier der eigentliche Dll - Code
So kann man ein Assembly in VBA verwenden.

Innerhalb von VBA greift man über die COM-Addins Collection auf diese dann
offengelegten Eigenschaften und Methoden zu. In diesem Fall heißt das
COM-Addin MyAppTimer.GetLastAccess()

Beitrag wurde zuletzt am 16.01.16 um 17:13:24 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Access VBA Problem beim Einbinden selbstgeschriebener dll1.890BjoernS.15.01.16 16:55
Re: Access VBA Problem beim Einbinden selbstgeschriebener dl...962Blackbox15.01.16 18:29
Ah, habe es wieder gefunden970Blackbox16.01.16 17:02
Re: Ah, habe es wieder gefunden929BjoernS.20.01.16 16:38
Re: Ah, habe es wieder gefunden1.077Blackbox20.01.16 17:54

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel