Dieser Beitrag zeigt, wie man ein eigenes COM Control
für MS Office Anwendungen erstellen kann, welches die komplette Funktionalität
von Windows 10 .Net Framework 4.7 aufweist.
Für
Access, Excel, Word, Outlook, Powerpoint Visual Studio 2017.
Unter Office Anwendungen werden COM Controls meistens in
der Visual Basic Entwicklungsumgebung als Referenz eingebunden.
In Menü->Extras->Verweise
Wenn man hier einen Verweis auf ein externes Control
(.tlb, .dll, .ocx) gesetzt hat, dann kann man das COM Control zur Laufzeit
programmieren
Als
Video Tutorial
Erstellen in Visual Studio 2017
In Visual Studio erstellt man zunächst ein neues Projekt
Man verwendet das Class Library (.NET Framework) Projekt am Besten unter der Sprache Visual Basic .Net
Einstellungen des Projekts
Im Class Library Project öffnet man die Einstellungen
des Projekts und stellt das Projekt als COM Ein
In Application->Assembly
Information->Make assembly COM Visible
Signing
Unter Signing
erstellt man im DropDown Feld des Choose as strong name key File
< New.. >
Und gibt dann im Dialog: Create Strong Name Key ein unter:
Key file name:
einen freien Eintrag wie axDLL07_key
In Passwort ein Wort mit mindestes 8 Zeichen aus
Buchstaben und Zahlen
Compile
Unter den Eigenschaften von Kompilieren sollte man die
Option aktivieren: Register for COM Interop
Zum Kompilieren muss man das Projekt erneut als Visual
Studio als Administrator öffnen
Code
Snippet einbinden
Am Besten fügt man dann als rumpf das folgende Code
Snippet ein.
Code-Snippet
Visual Basic Code für das COM Control
In
Visual Studio 2017, Net Framework 4.7
<ComClass(clsTest.ClassId,
clsTest.InterfaceId, clsTest.EventsId)>
Public Class clsTest
Public Const ClassId As String = ""
Public Const InterfaceId As String = ""
Public Const EventsId As String = ""
Public Sub New()
MyBase.New()
End Sub
Public Function zeige_Message(ByVal Message_Text As String) As Boolean
MsgBox(Message_Text, MsgBoxStyle.Information, "mein Test Dialog")
Return True
End Function
End Class
|
Den ID Feldern
neue eindeutige GUID Nummern zuweisen
Nun muss man für jede der 3 ID Nummern jeweils eine neue
eindeutige GUID Nummer erstellen zu zuweisen
Man findet die GUID Nummern unter
Menü->Tools->Create GUID
Dann erstellt wählt man die Option Registry Format (..)
aus
Dann erstellt man jeweils eine new GUID, kopiert diese
und fügt diese in die leeren String-Stellen ein
Die geschweiften Klammern am Anfang und Ende der GUID muss
man entfernen
Build Project Build Solution
Mit dem Kompilieren des Projekts wird die DLL als
Ausgabe gebildet und zusätzlich eine Type Library Datei
.tlb Datei
In der Ausgabe des Bin Verzeichnisses findet man die
.tlb Datei, welche man in der MS Office Anwendung als Referenz einbinden muss
Wechsel zu Administrator
Projekt mit der Option COM Interop können nur als
Administrator kompiliert werden.
Ansonsten
kommt die Meldung:
Cannot
register assembly ..dll access denied. Please make sure youre running the
application as administrator
Deshalb Visual Studio schliessen und anschliessen im Windows 10 Start Menü
das Visual Studio im Context Menü als Run
as administrator starten
Sobald man das Projekt und die Solution kompiliert hat, findet man eine
Datei mit der Endung .tlb in bin Ausgabe-Verzeichnis.
Wenn man diese Type Library .tlb in dem Office Anwendung
in der vba Code Entwicklungsumgebung mit Menü->Extras->Verweise anbindet,
dann kann man das externe NET Control mit Intellisense programmieren.
Das COM Control wird mit der as New
COM_Control.Classname in die Office Anwendung übernommen.
Danach sind alle
public Funktion aus dem .Net Projekt als vba-Methoden zur Verfügung
Vba Code
in MS Access as Beispiel
Option Compare Database
Option Explicit
Private Sub btnTest_Click()
Dim
myControl As New axDLL07.clsTest
myControl.show_Message
"Hello now it is 9:18"
End Sub
|
Beispiele:
Email
Client
OCR
Code, Bar Code Controls für Office
Jpg Mp4
Image Handler um Fotos anzupassen
Stichworte:
COM Dll Control, ActiveX ocx, Type Library .tlb, COM Interop Interoperability
COM Register RegAsm, Register COM, UserControls Microsoft Office Components,
Referenz Verweise in vba