Diese Beschreibung zeigt, wie man ein COM Control erstellt und anschliessend in Microsoft Office verwendet.
Dabei wird das COM Control in C# in Visual Studio erstellt. Die Beschreibung enthält den Basis-Code in C# zum Erstellen eines COM Controls.
Das COM Control wird in diesem Beispiel nur als .dll Datei erstellt und kommt ohne sichtbares Bediener-Control aus.
Betrifft:
Erstellung in Android Studio C# oder vb.net als Application type: Class Library
Anwendung in:
Microsoft Word, Excel, Access, Powerpoint
.Dll .tlb COM ActiveX
1) ein neues Project erstellen
In Visual Studio auf File->New->Project
Dann im Dialog: New Project auswählen :
Installed->Windows Desktop->Class Library (.NET Framework) in Visual C# oder Vb.net
Das Projekt heißt im Beispiel: Pdf_Text_Reader
Nach Erstellung der Class Library (.NET Framework)
Start Code C# unter Class1.cs
Von Visual Studio automatisch erstellt
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace Pdf_Text_Reader { public class Class1 { } } |
Grundeinstellugn für COM-Projekte
Für COM Projekte muss man im Project->Properties einige COM-Optionen aktivieren:
Application
Dann auf Assembly Information->Make assembly COM-Visible
Build
Unter Project->Build:->Register for COM Interop aktivieren
Signing
Unter Project->Signing->Sign the assembly
Auf Chosse as strong name key file: <New..> auswählen
Dann einen neuen Schlüssel eingeben
Unter Key File name: einen neuen Namen frei definierbar eingeben
C#: COM Code
1) unter Using InteropServices
using System.Runtime.InteropServices; |
2) im Ersten Block definiert man die in Ms Office sichtbaren zugriffe wie COM.Functions(..) (Methoden in c#).
Dabei kopiert man einfach namentlich die internen Methoden aus der COM-Class
[InterfaceType(ComInterfaceType.InterfaceIsDual)] [Guid("your-GUID-1")] public interface _Visible_Methods { //--------< _Visible_Methods >-------- //*visible COM Methods of this Control under Office,Excel, Word //*simply repeat method from class string get_Hello();
//--------</ _Visible_Methods >-------- } |
Dann gibt man der COM Classe die Attribute ClassInterface, eine GUID und eine ProgID
[ClassInterface(ClassInterfaceType.None)] [Guid("your-GUID-2")]
[ProgId("Pdf_Text_Reader")] public class pdf_Reader : _Visible_Methods { .. } |
C# Code-Snippet
Für COM Control
C# Code-Vorlage für COM Control dll in Ms Office (Excel, Word, Powerpoint..)
using System; using System.Runtime.InteropServices;
[InterfaceType(ComInterfaceType.InterfaceIsDual)] [Guid("your-GUID1")] public interface _Visible_Methods { //--------< _Visible_Methods >-------- //*visible COM Methods of this Control under Office,Excel, Word //*simply repeat method from class string get_Hello();
//--------</ _Visible_Methods >-------- }
[ClassInterface(ClassInterfaceType.None)] [Guid("your-GUID2")]
[ProgId("Pdf_Text_Reader")] public class pdf_Reader : _Visible_Methods { //----------------< class: pdf_Reader >---------------- //*internal method public string get_Hello() { //--------< get_Hello() >--------
return "Hello, this Text is from the C# COM.dll. Code at under CodeDocu.com";
//--------</ get_Hello() >-------- }
//----------------</ class: pdf_Reader >---------------- }
|
Ausgabe-Dateien von Visual Studio
Runtime-Dateien
Man benötigt für das COM Control Objekt die Dateien im /bin/Debug oder /bin/Release verzeichnis.
Dabei wird die .tlb Datei erst beim zweiten Aufruf von Menü->Build ->Build Solution erzeugt.
Alle 3 Dateien (COM.dll,.pdb, .tlb) müssen in das Verteiler-Verzeichnis kopiert werden, welche man für Office letztendlich verwendet.
Zum Testen oder zur Weitergabe kann man die Dateien vom Projekt-Ordern ein Weitergabe-Verzeichnis kopieren.
Registrieren und Deinstallieren
Bevor man die COM dateien in Ms Office verwenden kann, muss man die COM_File.tlb Datei mit register.bat in Windows 7 und Windows 10 anmelden.
Man muss die register.bat als Administrator aufrufen.
In der Register.bat steht der Aufruf von regasm.exe "full_path_your_COM_project.dll" mit /tlb und /codebase als Parametern.
Register.bat Code
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "C:\_Daten\Desktop\VS_Projects\ActiveX\Pdf_Text_Reader\_Test\Pdf_Text_Reader.dll" /tlb /codebase Pause |
Unregister.bat
Man benötigt die Unregister.bat, wenn man das COM Control vom Windows Rechner entfernen will.
Hier ist darauf zu achten, dass regasm.exe mit /u ausgeführt wird und auf die xxx_your_com.dll Datei verweist.
Unregister.bat code
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /u "C:\_Daten\Desktop\VS_Projects\ActiveX\Pdf_Text_Reader\_Test\Pdf_Text_Reader.dll" pause |
Anwendung in Excel
Unter Microsoft MS Excel bindet man diese COM Datei in der vba Codebehind Seite ein.
Man kommt zu der vba Seit mit Alt-F11.
Verweis erstellen:
Dann muss man unter Menü->Extras->Verweise mit Durchsuchen… auf die .tlb Datei des Projektes gehen.
Vba-Code
Anschliessend kann man das COM Control wie folgt mit Intellisense einbinden.
Vba Code Beispiel
Option Explicit On
Public Sub Test() Dim pdf_Reader As New Pdf_Text_Reader.pdf_Reader
Dim s As String s = pdf_Reader.get_Hello
MsgBox s End Sub
|
Ausführung in Excel
Dann die Ausführung unter Excel:
Der Dialog erscheint aus der Rückgabe -Strings der COM-Dll
COM und ActiveX
Dies Beschreibung ist für eine COM-Anwendung als .dll, welche unter Microsoft Office zum Aufrufen und ausführen von Windows Programmen dient.
Dabei ist diese COM ohne sichtbare User-Schnittstelle.
Der Aufbau eine ActiveX Usercontol Anwendung ist ziemlich ähnlich.