Calling an ActiveX DLL with form from MSAccess

I have created an Activex DLL which includes a non interactive form - always on top' (display only). I am trying to call the dll in order to display the form, however, access is giving me an error that states "Run-time Error 406 Non-modal forms cannot be displayed in this host application from ActiveX DLL, ActiveX Control, or Property Page."

Is there a way to invoke this ActiveX by getting aroung the modal requirement of MSAccess? If so, how can I do it?

Modeless Forms
You cannot use modeless forms in some containers, including Internet Explorer, when the server is in-process. If you attempt to use a non-modal form, the following error may be received:

"Run-time error '406': Non-modal forms cannot be displayed in
this host application from an ActiveX DLL, ActiveX Control or
Property Page."

To avoid this problem, you can code all of your forms to open as modal (being aware of the issues stated above) or you can test for the behavior of the container, using the App object, before opening the form:

If App.NonModalAllowed Then
frmModeless.Show vbModeless
Else
frmModeless.Show vbModal
End If

If you do use modeless forms, users will be able navigate away from your ActiveX document and the form will drop to the background if navigation takes place.
Unlike modal forms, modeless forms will appear in the Windows TaskBar if the ShowInTaskBar property is set to true.

I understand that the fix is simply to make the form modal, but this is not my desired behaviour. I wish to be able to pop up an 'always on top' window even if Access is minimized. There is a certain level of interaction I need with this window..i.e.) sending it a message to display.

Does it have to be an ActiveX DLL (In-Process Server). I think you may be able to do it with an ActiveX EXE (Out-of-Process Server). If you can make it out of process, let me know if you want to do this and I will see about generating some code.

Ok this is an example of what I am trying to do... I would like a VB application which is defined as 'always on top' (which I can already do), that includes a form in it. On this form is a text box that is populated by calls sent from an MSAccess database application. I have successfully created both sides of the program...but I got the error that was stated in the first message from me...IF I do make the form in the VB application modal, the error goes away, BUT the desired behaviour is lost...i.e) if the MS Access application is minimized, the VB app is as well (obviously since it is modal)...

I am not sure an ActiveX EXE would solve this since it states it in the original error that I have received, unless there is something that I am not aware of...

My comment above from Microsoft says that forms can't be modeless in in-process servers. That leads me to believe that if you make it an Out of Process server (an ActiveX Exe) that it should work. I haven't had time to test it, but it might not be to difficult for you since you already have the source. Give it a shot, it couldn't hurt.

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…

As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…

Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…