How To Add a Button to a Word Document and Assign Its Click Event at Run-time (246299)



The information in this article applies to:

  • Microsoft Office Word 2003
  • Microsoft Word 2002
  • Microsoft Word 2000

This article was previously published under Q246299

SUMMARY

This article demonstrates how you can use a Visual Basic for Applications macro to programmatically add a control to a Microsoft Word document and add a Click event handler for that control.

MORE INFORMATION

The following steps illustrate how you can create a Word macro that will add a control to a document and assign that control's Click event at run-time. Although the steps below are for Word, you can apply the same concepts to programmatically manipulate controls in Microsoft Excel workbooks.

Note The ability to manipulate the Visual Basic Project of an Office document at run-time requires a reference to the Microsoft Visual Basic for Applications Extensibility library.

Steps to Create Sample

  1. Start a new document in Word.
  2. Press Alt+F11 to go to the Visual Basic Editor.
  3. Click Tools and then References and select the reference for "Microsoft Visual Basic for Applications Extensibility".
  4. Insert a new module and add the following code:
    Sub Test()
        
        'Add a command button to a new document
        Dim doc As Word.Document
        Dim shp As Word.InlineShape
        Set doc = Documents.Add
        
        Set shp = doc.Content.InlineShapes.AddOLEControl(ClassType:="Forms.CommandButton.1")
        shp.OLEFormat.Object.Caption = "Click Here"
        
        'Add a procedure for the click event of the inlineshape
        '**Note: The click event resides in the This Document module
        Dim sCode As String
        sCode = "Private Sub " & shp.OLEFormat.Object.Name & "_Click()" & vbCrLf & _
                "   MsgBox ""You Clicked the CommandButton""" & vbCrLf & _
                "End Sub"
        doc.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString sCode
            
    End Sub
  5. Run the macro "Test".
  6. Once the macro "Test" finishes running, you will see a new CommandButton control on a new document. When you click the CommandButton, it's Click Event fires.

Additional Notes for Word 2002 and Word 2003

By default, access to a Word VBA project is disabled. When disabled, the code above may generate the run-time error '6068', "Programmatic Access to Visual Basic Project is not trusted." For additional information about this error and how you can correct it, click the article number below to view the article in the Microsoft Knowledge Base:

282830 PRB: Programmatic Access to Office XP VBA Project Is Denied


Modification Type:MajorLast Reviewed:3/23/2006
Keywords:kbhowto KB246299