The Microsoft Office applications listed above provide built-in properties that are stored with documents. In addition, you can create and modify custom document properties if there is additional information you want to store with the document.
Applies to: The information in this topic applies to document-level projects and application-level projects for the following applications: Excel 2007 and Excel 2010; PowerPoint 2007 and PowerPoint 2010; Project 2007 and Project 2010; Word 2007 and Word 2010. For more information, see Features Available by Office Application and Project Type.
Use the CustomDocumentProperties property of a document to work with custom properties. For example, in a document-level project for Microsoft Office Excel, use the CustomDocumentProperties property of the ThisWorkbook class. In an application-level project for Excel, use the CustomDocumentProperties property of a Microsoft.Office.Interop.Excel.Workbook object. These properties return a DocumentProperties object, which is a collection of DocumentProperty objects. You can use the Item property of the collection to retrieve a particular property, either by name or by index within the collection.
The following example demonstrates how to add a custom property in a document-level customization for Excel and assign it a value.
For a related video demonstration, see How Do I: Access and Manipulate Custom Document Properties in Microsoft Word?.
Sub TestProperties() Dim properties As Microsoft.Office.Core.DocumentProperties properties = CType(Me.CustomDocumentProperties, Office.DocumentProperties) If ReadDocumentProperty("Project Name") <> Nothing Then properties("Project Name").Delete() End If properties.Add("Project Name", False, _ Microsoft.Office.Core.MsoDocProperties.msoPropertyTypeString, _ "White Papers") End Sub Private Function ReadDocumentProperty(ByVal propertyName As String) As String Dim properties As Office.DocumentProperties properties = CType(Me.CustomDocumentProperties, Office.DocumentProperties) Dim prop As Office.DocumentProperty For Each prop In properties If prop.Name = propertyName Then Return prop.Value.ToString() End If Next Return Nothing End Function
void TestProperties() { Microsoft.Office.Core.DocumentProperties properties; properties = (Office.DocumentProperties)this.CustomDocumentProperties; if (ReadDocumentProperty("Project Name") != null) { properties["Project Name"].Delete(); } properties.Add("Project Name", false, Microsoft.Office.Core.MsoDocProperties.msoPropertyTypeString, "White Papers", missing); } private string ReadDocumentProperty(string propertyName) { Office.DocumentProperties properties; properties = (Office.DocumentProperties)this.CustomDocumentProperties; foreach (Office.DocumentProperty prop in properties) { if (prop.Name == propertyName) { return prop.Value.ToString(); } } return null; }
Attempting to access the Value property for undefined properties raises an exception.