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

Followers 0
Login Register as User

Create C# COM Control for Office

10.10.2018 (👁5234)


This description shows how to create a COM Control and then use it in Microsoft Office.

The COM Control is created in C # in Visual Studio. The description contains the base code in C # for creating a COM control.

The COM Control is created in this example only as a .dll file and does not require visible operator control.





Created in Android Studio C # or as Application type: Class Library

Application in: 

Microsoft Word, Excel, Access, Powerpoint

.Dll .tlb COM ActiveX


1) create a new project

In Visual Studio on File-> New-> Project



Then in the dialog: Select New Project:

Installed-> Windows Desktop-> Class Library (.NET Framework) in Visual C # or

The project is called in the example: Pdf_Text_Reader


After creating the Class Library (.NET Framework)


Start Code C # under Class1.cs

Automatically created by Visual Studio

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace Pdf_Text_Reader


    public class Class1







Basic settings for COM projects

For COM projects, you have to enable some COM options in Project-> Properties:


Then on Assembly Information-> Make assembly COM-Visible


Under Project-> Build: -> Enable Register for COM Interop



Under Project-> Signing-> Sign the assembly

On Chosse as strong name key file: <New ..> choose


Then enter a new key

Under Key File name: enter a new name freely definable



C #: COM code


1) under Using InteropServices

using System.Runtime.InteropServices;   


2) In the first block you define the accesses visible in MS Office like COM.Functions (..) (Methods in C #).

You simply copy the internal methods from the COM-Class



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 >--------



Then you give the COM class the attributes ClassInterface, a GUID and a ProgID





public class pdf_Reader : _Visible_Methods






C # code snippet

For COM Control

C # Code template for COM Control dll in MS Office (Excel, Word, PowerPoint ..)

using System;

using System.Runtime.InteropServices;





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 >--------







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";


        //--------</ get_Hello() >--------



    //----------------</ class: pdf_Reader  >----------------




Output files from Visual Studio

Runtime files

You need the files in the / bin / debug or / bin / release directory for the COM Control object.

The .tlb file is only created on the second call of Menu-> Build -> Build Solution.

All 3 files (COM.dll, .pdb, .tlb) must be copied to the distribution directory, which will be used for Office.



For testing or redistribution, you can copy the files from the project folder to a redistribution directory.



Register and Uninstall

Before you can use the COM files in MS Office, you have to register the COM_File.tlb file with register.bat in Windows 7 and Windows 10.

You have to call the register.bat as administrator.


In regster.exe registry.bat calls regasm.exe "full_path_your_COM_project.dll" with / tlb and / codebase as parameters.


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




You need the Unregister.bat, if you want to remove the COM Control from the Windows computer.

Make sure that regasm.exe is run with / u and points to the xxx_your_com.dll file.

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"



Application in Excel


Under Microsoft MS Excel you include this COM file in the vba codebehind page.

You come to the vba side with Alt-F11.


Create a reference:

Then you have to go under Menu-> Extras-> References with Browse ... on the .tlb file of the project.


Vba Code

Then you can integrate the COM Control with Intellisense as follows.


Vba code example

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




Execution in Excel

Then the execution under Excel:

The dialog appears from the return string of the COM DLL



COM and ActiveX

This description is for a COM application as .dll, which under Microsoft Office serves for calling and executing Windows programs.

This COM is without visible user interface.

Building an ActiveX Usercontol application is pretty similar.