Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

C# COM Control für Office erstellen

10.10.2018 (👁18245)


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.