Microsoft Forms 2.0 Object Library Here
Dim frm As Object Set frm = CreateObject("Forms.Form.1") Or using the built-in New keyword with a reference set to Microsoft Forms 2.0 Object Library . | Object | Description | |--------|-------------| | Form | Container for controls; supports properties like Caption , Width , Height , BackColor . | | Control | Base class for all form controls. | | Controls | Collection of controls on a form. | | TextBox , ComboBox , etc. | Individual UI elements with events ( Click , Change , Enter , Exit ). | | DataObject | Handles clipboard operations (GetText, SetText, PutInClipboard). | | Font / Picture | Typography and image handling. | Sample instantiation (VBA): Dim frm As Object Dim txt As Object Set frm = CreateObject("Forms.Form.1") frm.Caption = "Dynamic Form" frm.Width = 300 frm.Height = 200
However, fully dynamic event hooking (addressing arbitrary controls created at runtime) requires maintaining a collection of WithEvents variables or using CallByName . The DataObject provides a clean way to read/write clipboard text without Win32 APIs: microsoft forms 2.0 object library
Here’s a technical deep-dive write-up on the , aimed at developers, security researchers, and IT pros working with VBA, VBScript, or legacy Office automation. Deep Dive: Microsoft Forms 2.0 Object Library – Capabilities, Quirks, and Security Considerations 1. Overview Microsoft Forms 2.0 Object Library ( FM20.DLL ) is a component shipped with Microsoft Office (starting from Office 97 through Office 2019 and Microsoft 365). It provides the underlying engine for UserForms in VBA (Excel, Word, Outlook, etc.) and controls like TextBox , ComboBox , ListBox , CheckBox , OptionButton , CommandButton , MultiPage , and Image . Dim frm As Object Set frm = CreateObject("Forms
Example – handling a button click dynamically: | | Controls | Collection of controls on a form
Set txt = frm.Controls.Add("Forms.TextBox.1", "MyTextBox", Visible:=True) txt.Text = "Hello Forms 2.0"
On Error Resume Next Dim test As Object Set test = CreateObject("Forms.Form.1") If Err.Number <> 0 Then Debug.Print "Forms 2.0 unavailable in this bitness" Despite being old, Forms 2.0 is still used for legitimate automation:
While often overlooked, the library has powerful automation interfaces accessible via VBA or any COM-aware language (C#, VB6, PowerShell). : Even in 64-bit Office, FM20.DLL is typically a 32-bit library (due to legacy constraints). This affects cross-bitness COM calls. 2. Core Object Model The main programmatic entry point is the Forms object, created via: