OLE programmatic identifiers, late binding, and early binding (Project)
Learn how to add an Automation object by using late binding at run time, and how to set a reference for early binding at design time.
Use an OLE programmatic identifier (sometimes called a ProgID) to create an automation object for run time binding. For example, if both Project and Word are installed on the computer, the following macro in Project creates a Word document named Doc1.docx, and then opens the Save As dialog box in Word.
Sub CreateWordDoc_Late()
Dim wdDoc As Object
Set wdDoc = CreateObject("Word.Document")
wdDoc.Save
End Sub
Note Objects created by using the ProgID have late binding at run time; therefore, you cannot see the object members available when you are writing code in the VBE. Late-bound objects also have poorer performance than objects created with early binding at design time.
The following macro performs better and does the same job as the CreateWordDoc_Late macro. The CreateWordDoc_Early macro requires that you add a reference to the Microsoft Word 15.0 Object Library. In the Tools menu, choose References to open the References - VBA Project dialog box.
Sub CreateWordDoc_Early()
Dim wdDoc As Word.Document
Set wdDoc = New Word.Document
wdDoc.Save
End Sub
Following is an example of using early binding to create an Excel worksheet. Set a reference to Microsoft Excel 15.0 Object Library.
Sub CreateExcelWorkbook_Early()
Dim xlApp As Excel.Application
Dim xlWorkbook As Excel.Workbook
Dim xlWorksheet As Excel.Worksheet
Set xlApp = Excel.Application
xlApp.Visible = True
Set xlWorkbook = xlApp.Workbooks.Add
Set xlWorksheet = xlWorkbook.Worksheets(1)
xlWorksheet.Cells(1, 1).Value = "Data from Project"
xlWorksheet.SaveAs ("C:\Project\VBA\ProjectWorksheet.xlsx")
xlWorkbook.Close
xlApp.Visible = False
End Sub
For information about using Project from another application, late binding, and early binding, see the Application object.
The following tables list OLE programmatic identifiers for ActiveX controls and several Microsoft Office applications.
Note Instead of using the ProgId values for late binding, we recommend that you set a reference to the equivalent object library and use early binding.
ActiveX Controls
To create the ActiveX controls listed in the following table, use the corresponding OLE programmatic identifier. When you insert a user form, Project sets a reference to Microsoft Forms 2.0 Object Library for early binding.
To create this control | Use this identifier |
---|---|
CheckBox | Forms.CheckBox.1 |
ComboBox | Forms.ComboBox.1 |
CommandButton | Forms.CommandButton.1 |
Frame | Forms.Frame.1 |
Image | Forms.Image.1 |
Label | Forms.Label.1 |
ListBox | Forms.ListBox.1 |
MultiPage | Forms.MultiPage.1 |
OptionButton | Forms.OptionButton.1 |
ScrollBar | Forms.ScrollBar.1 |
SpinButton | Forms.SpinButton.1 |
TabStrip | Forms.TabStrip.1 |
TextBox | Forms.TextBox.1 |
ToggleButton | Forms.ToggleButton.1 |
Microsoft Access
To create the Access objects listed in the following table, use one of the corresponding OLE programmatic identifiers. If you use an identifier without a version number suffix, you create an object in the most recent version of Access that is available on the computer where the macro is running. For early binding, set a reference to Microsoft Access 15.0 Object Library.
To create this object | Use one of these identifiers |
---|---|
Application | Access.Application, Access.Application.15 |
CurrentData | Access.CodeData, Access.CurrentData |
CurrentProject | Access.CodeProject, Access.CurrentProject |
DefaultWebOptions | Access.DefaultWebOptions |
Microsoft Excel
To create the Excel objects listed in the following table, use one of the corresponding OLE programmatic identifiers. If you use an identifier without a version number suffix, you create an object in the most recent version of Excel that is available on the computer where the macro is running. For early binding, set a reference to Microsoft Excel 15.0 Object Library.
To create this object | Use one of these identifiers | Comments |
---|---|---|
Application | Excel.Application, Excel.Application.15 | |
Workbook | Excel.AddIn | |
Workbook | Excel.Chart, Excel.Chart.8 | Returns a workbook containing two worksheets: one for the chart, and one for its data. The chart worksheet is the active worksheet. |
Workbook | Excel.Sheet, Excel.Sheet.12 | Returns a workbook with one worksheet. |
Graph
To create the Graph objects listed in the following table, use one of the corresponding OLE programmatic identifiers. If you use an identifier without a version number suffix, you create an object in the most recent version of Graph that is available on the computer where the macro is running. For early binding, set a reference to Graph 15.0 Object Library.
To create this object | Use one of these identifiers |
---|---|
Application | MSGraph.Application, MSGraph.Application.8 |
Chart | MSGraph.Chart, MSGraph.Chart.8 |
Microsoft Office Web Components
Note The Microsoft Office Web Component (OWC) is deprecated and is not installed with Project.
Microsoft Outlook
To create the Microsoft Outlook object given in the following table, use one of the corresponding OLE programmatic identifiers. If you use an identifier without a version number suffix, you create an object in the most recent version of Outlook that is available on the computer where the macro is running. For early binding, set a reference to Microsoft Outlook 15.0 Object Library.
To create this object | Use one of these identifiers |
---|---|
Application | Outlook.Application, Outlook.Application.15 |
Microsoft PowerPoint
To create the Microsoft PowerPoint object given in the following table, use one of the corresponding OLE programmatic identifiers. If you use an identifier without a version number suffix, you create an object in the most recent version of PowerPoint that is available on the computer where the macro is running. For early binding, set a reference to Microsoft PowerPoint 15.0 Object Library.
To create this object | Use one of these identifiers |
---|---|
Application | PowerPoint.Application, PowerPoint.Application.15 |
Microsoft Word
To create the Microsoft Word objects listed in the following table, use one of the corresponding OLE programmatic identifiers. If you use an identifier without a version number suffix, you create an object in the most recent version of Word that is available on the computer where the macro is running. Word.Document.8 and Word.Document.12 both create a document in the default Open XML format (.docx). For early binding, set a reference to Microsoft Word 15.0 Object Library.
To create this object | Use one of these identifiers |
---|---|
Application | Word.Application, Word.Application.14 |
Document | Word.Document, Word.Document.8, Word.Template.8, Word.Document.12, Word.Template.12 |
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.