Criar e modificar propriedades personalizadas do documento

Os aplicativos do Microsoft Office listados acima fornecem propriedades internas que são armazenadas com documentos. Além disso, você pode criar e modificar propriedades personalizadas do documento se houver informações adicionais que você deseja armazenar com o documento.

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para os seguintes aplicativos: Excel; PowerPoint; Projeto; Palavra. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Use a propriedade CustomDocumentProperties de um documento para trabalhar com propriedades personalizadas. Por exemplo, em um projeto de nível de documento para o Microsoft Office Excel, use a CustomDocumentPropertiesThisWorkbook propriedade da classe. Em um projeto de suplemento VSTO para Excel, use a CustomDocumentProperties propriedade de um Workbook objeto. Essas propriedades retornam um DocumentProperties objeto, que é uma coleção de DocumentProperty objetos. Você pode usar a Item propriedade da coleção para recuperar uma propriedade específica, por nome ou por índice dentro da coleção.

O exemplo a seguir demonstra como adicionar uma propriedade personalizada em uma personalização em nível de documento para o Excel e atribuir-lhe um valor.

Exemplo

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");
}

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;
}

Programação robusta

A tentativa de acessar a Value propriedade para propriedades indefinidas gera uma exceção.