Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Introduzidos no Word 2007, blocos de construção são similares às entradas de autotexto das versões anteriores. Entretanto, com os blocos de construção, você poderá organizar as entradas de modo a permitir a determinação do modo como um usuário as utilizará. Um bloco modular personalizado ajuda os utilizadores a inserir conteúdos avançados em qualquer parte do documento através de uma lista pendente formatada. Quando usados juntamente com os controles de conteúdo, os blocos de construção podem permitir a você desenvolver soluções poderosas de maneira muito rápida e fácil.
O modelo de objeto dos blocos de construção inclui três novos objetos e quatro novas coleções. Eles permitem a você criar uma estrutura organizacional que atende suas necessidades específicas e modificar a estrutura para uma solução específica. Os novos objetos e coleções são relacionados na tabela seguir.
| Nome | Descrição |
|---|---|
| BuildingBlock | Uma entrada de bloco de construção específica. |
| BuildingBlocks | Uma coleção de entradas de bloco de construção em um modelo que são do mesmo tipo e categoria. |
| BuildingBlockEntries | Uma coleção de todos os blocos de construção em um modelo. |
| BuildingBlockType | Um tipo de bloco de construção. |
| BuildingBlockTypes | Uma coleção dos tipos de bloco de construção. |
| Categoria | Uma categoria do bloco de construção. |
| Categorias | Uma coleção de categorias de bloco de construção. |
Compreender os blocos modulares
Os blocos de construção são organizados por tipo e categoria. Os tipos de bloco modular são compostos por um número limitado de constantes WdBuildingBlockTypes . Embora exista um número limitado dessas constantes, esse número não é pequeno. Há 35 constantes WdBuildingBlockTypes diferentes. Esses tipos ajudam você a definir e a organizar seus blocos de construção e, embora você não possa criar tipos de bloco de construção adicionais, poderá criar um número ilimitado de categorias para cada tipo.
As categorias são compostas por um número ilimitado de cadeias de caracteres que você poderá definir para organizar seus blocos de construção personalizados. Os blocos de construção são armazenados em modelos. Por predefinição, os modelos incluídos no Word têm categorias de blocos modulares como "Geral" e "Incorporado". Porém, você não está limitado apenas às categorias que estão incluídas nesses modelos. Uma categoria poderá ser qualquer cadeia de caracteres definida por você. Os tipos e categorias são explicados mais adiante neste tópico.
Como você pode organizar os blocos de construção em tipos e categorias, eles poderão ser muito flexíveis. Por exemplo, você poderá ter um bloco de construção nomeado como "Título" que tem um tipo de wdTypeBibliography e uma categoria de "Títulos de Livro" e um outro bloco de construção nomeado como "Título" que tem um tipo de wdTypeBibliography e uma categoria de "Títulos de Filmes" e, em seguida, você poderá ter ainda outro bloco de construção nomeado como "Título" que tenha um tipo de wdTypeCustomHeaders e uma categoria de "Títulos de Livros" e assim por diante. A incrível flexibilidade que os blocos de construção permitem a criação de soluções personalizadas sem precisar escrever códigos.
Entretanto, os blocos de construção também são programáveis. Você poderá criar novos blocos de construção, excluir blocos de construção e gerenciar blocos de construção de forma programada. Também pode ver quando os utilizadores inserem novos blocos modulares num documento através do evento BuildingBlockInsert . Além disso, você poderá usar os blocos de construção com controles de conteúdo para dar a você ainda um maior controle em relação a quais blocos de construção os usuários podem inserir em seus documentos. Por exemplo, você poderá usar um controle de conteúdo do bloco de construção para filtrar os tipos de blocos de construção que um usuário visualiza, o que significa que o usuário não pode inserir um bloco de construção em um documento que não é permitido em um local específico no documento. Há vários exemplos nas seções a seguir que mostram como usar os objetos de bloco de construção para trabalhar com blocos de construção de forma programada.
Tarefas simples
As seções a seguir fornecem exemplos simples de como fazer tarefas específicas usando os objetos do bloco de construção. Você pode localizar exemplos de código adicional nos tópicos do objeto e em muitos dos tópicos do membro.
Criar um bloco modular personalizado
Criar um bloco modular personalizado é tão simples como utilizar o método Add para a coleção BuildingBlockEntries . Também pode utilizar o método Add para a coleção BuildingBlocks ; no entanto, este método pode gerar um erro de tempo de execução se não existirem atualmente blocos modulares para o tipo ou categoria especificado. Conforme explicado na tabela de objetos, a coleção BuildingBlocks é uma coleção de blocos modulares para um tipo e categoria específicos. A coleção BuildingBlocksEntries contém todos os blocos para um modelo. Portanto, a forma preferida de adicionar novos blocos de construção de forma programada, é usar o método Add para a coleção BuildingBlockEntries.
O exemplo de código a seguir recolher a seleção atual, cria um intervalo e especifica o texto para o intervalo e, em seguida, adiciona a seleção como um bloco de construção personalizado em uma coleção de entradas de bloco de construção no modelo anexado ao documento atual.
Sub AddCustomBuildingBlock()
Dim objTemplate As Template
Dim objBB As BuildingBlock
Dim objRange As Range
' Set the template to store the building block
Set objTemplate = ActiveDocument.AttachedTemplate
' Collapse the range, set the range, and add the text
Selection.Collapse
Set objRange = Selection.Range
objRange.Text = "Building blocks for the technically challenged"
' Add the building block to the template
Set objBB = objTemplate.BuildingBlockEntries.Add( _
Name:="Title", _
Type:=wdTypeCustomHeaders, _
Category:="Book Titles", _
Range:=objRange)
End Sub
Adicionar uma nova categoria
Conforme mencionado anteriormente, você poderá adicionar um número ilimitado de categorias. Entretanto, não existe o método Add para a coleção Categories. Portanto, para adicionar uma nova categoria à coleção, será necessário adicionar um novo bloco de construção. Por exemplo, no exemplo do código anterior, se a categoria "Títulos de Livro" não existir quando você executar o código, o Word a adicionará à coleção Categories.
Aceder a um bloco modular existente
Em algum momento, vai querer aceder a um dos blocos modulares que tem, seja um bloco modular personalizado ou um dos blocos modulares incorporados. Você poderia usar a coleção BuildingBlockEntries; entretanto, devido aos blocos de construção poderem compartilhar o mesmo nome, você precisaria identificar o tipo e a categoria do bloco de construção antes de saber qual você deseja retornado. Portanto, a melhor maneira de acessar os blocos de construção existentes é por meio da coleção BuildingBlocks.
O exemplo de código a seguir acessa o bloco de construção que você adicionou no exemplo de código anterior.
Sub GetExistingBuildingBlock()
Dim objTemplate As Template
Dim objBB As BuildingBlock
' Set the template where the building block is stored
Set objTemplate = ActiveDocument.AttachedTemplate
' Access the building block through the type and category
Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustomHeaders) _
.Categories("Book Titles").BuildingBlocks("Title")
End Sub
Inserir um bloco modular num documento
Depois de acessar um bloco de construção, use o método Insert do objeto BuildingBlock para inserir em um documento. O exemplo de código a seguir expande o exemplo do código anterior adicionando uma linha para inserir a construção em um documento ativo no Ponto de Inserção (ou para substituir o texto selecionado, se ele estiver selecionado).
Observação
Quando insere um bloco modular com o friso, Word determina automaticamente determinadas coisas sobre o bloco modular, como onde inseri-lo. No entanto, quando insere um bloco modular através do modelo de objeto, nenhuma destas informações incorporadas ocorre automaticamente. Por exemplo, quando você insere um bloco de construção de cabeçalho usando a faixa de opções, o Word determina automaticamente a substituição do cabeçalho existente. Ao inserir o mesmo bloco de construção do cabeçalho usando o modelo do objeto, será necessário especificar explicitamente onde colocar o texto do bloco de construção.
Sub InsertExistingBuildingBlock()
Dim objTemplate As Template
Dim objBB As BuildingBlock
' Set the template where the building block is stored
Set objTemplate = ActiveDocument.AttachedTemplate
' Access the building block through the type and category
Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustomHeaders) _
.Categories("Book Titles").BuildingBlocks("Title")
' Insert the building block into the document replacing any selected text
objBB.Insert Selection.Range
End Sub
Filtrar uma lista de blocos modulares num controlo de conteúdo
Se você combinar os blocos de construção com controles de conteúdo, será possível filtrar quais blocos de construção um usuário poderá acessar. Você faz isso usando um controle de conteúdo e um evento. Quando um usuário insere um controle de conteúdo, o evento ContentControlOnEnter para o objeto Document é acionado. Esse evento tem um parâmetro para o controle de conteúdo ativo. Você poderá determinar se o controle de conteúdo é de bloco de construção. Se estiver, utilize a propriedade BuildingBlockType e a propriedade BuildingBlockCategory para identificar que tipo e categoria utilizar para filtrar a lista de blocos modulares que estão disponíveis para o controlo de conteúdo. Isto especifica quais blocos de construção serão exibidos na lista suspensa do cabeçalho do controle de conteúdo.
O exemplo de código a seguir assume que existe pelo menos um controle de conteúdo no documento. Se o controle de conteúdo for de construção, a lista de blocos de construção exibida no bloco de construção do cabeçalho do controle de conteúdo incluirá somente aqueles adicionados, usando a sub-rotina AddCustomBuildingBlock mostrada anteriormente neste tópico. Para obter mais informações sobre os controles de conteúdo, consulte Trabalhando com controles de conteúdo.
Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl)
Dim objCC As ContentControl
Set objCC = ContentControl
If objCC.Type = wdContentControlBuildingBlockGallery Then
objCC.BuildingBlockType = wdTypeCustomHeaders
objCC.BuildingBlockCategory = "Book Titles"
End If
End Sub
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.