In this blog, I am going to show how to make your own ActiveX control using .Net Class library in c# and use it in MS Access 🙂
What is ActiveX?
ActiveX is a Microsoft-created technology that enables different software applications to share information and functionality. ActiveX only works with Microsoft applications like Word, Excel, Internet Explorer and PowerPoint, and will only work on a computer running the Windows operating system. Credit to https://entertainment.howstuffworks.com
In short, ActiveX is a framework created by Microsoft that adapts its earlier Component Object Model (COM) and Object Linking and Embedding (OLE) technologies. ActiveX gives programmers the freedom to create additional libraries or controls that can be shared in different windows applications.
Without going into too many details about what ActiveX is let’s make our own ActiveX in c# and use it in MS Access to make you understand it better.
Create the .Net Class Library
In your visual studio, go to create a new project and select class library in C# or VB I am using VS 2019 but you can use earlier versions of it.
Name the project to “ActiveXDotNet” you can choose whatever you want.
Make sure that you have installed .Net Framework 4+. I am using the .Net Framework 4.7.2.
Create the Message Box Procedure
Right click the Reference and add/Ticked the “System.Windows.Forms”. This will enable us to make a basic message box.
Create a User Controls
Right-click the project and go to add->User Control (Windows forms) and create/add a User Controls. I will just leave the default name.
In the user control import a button and change the text properties to “Click Me”
Double click the button or go to events (with the lightning symbol) and double click the “click” button.
Put the message box to button event within user control
Right-click the project and go to properties, In Application, click the “Assembly Information” and in the pop-up window check/ticked the “Make assembly COM-Visible” and click “Ok”. This enables the ActiveX Interface to be visible in Access.
Under build, Check/Ticked “Register for COM interop”
In User Control use System.Runtime.InteropServices, Microsoft.Win32m and System.Reflection. Put the ID and enable the class interface to be accessible.
The ComRegister Function
The ComUnregister Function
Now save the project and close it completely and open the visual studio as Administrator.
You should be able to see the recent project. If you can’t see it just simply browse the project from the directory where you save it.
Make a new CPU configuration. In my case I am using 64 bit so I would select “x64”. You can change the “Debug” to “Release” but make sure to check the project properties setting that everything are still the same. 🙂
Create MS Access Form
Type “Access” in windows search and select “Access” App
Create a blank
In “Design” import/select the button in the Form1 design and change the Caption properties to “Call myMsgBox”. This button will call the myMsgBox Function/Procedure from our customize ActiveX library functionalities.
Click the down arrow in the controls
Click ActiveX Control
You can see that “ActiveXDotNet.UserControl1” is already registered. Select it and click ok
Now we can see that the controls from .Net Class Library are now accessible in Access. If you click the “Click Me” you should be able to see MessageBox.
Accessing the myMsgbox in class1
Now let’s call the procedure “myMsgBox” from class1 that we created in c# .Net Class library. Click the button “Call myMsgBox” set the event to “[Event Procedure]” and click the button/icon with “…” on it.
Once you get to the VBA code behind go to tool->References. You can see that ActiveXDotNet class is now accessible. Check/Ticked it and click ok.
Initiate the class and call the “myMsgBox” procedure
Right-click the form and select “Form View”
Click the button and the message box from “myMsgBox” procedure from class1 will appear
That’s all 🙂 Kindly share this awesome blog 🙂