O controle Label é útil se você deseja exibir uma frase curta em um UserForm, mas se deseja exibir ou solicitar grandes quantidades de texto, você desejará usar o controle TextBox. Um TextBox é um contêiner de armazenamento retangular para palavras, frases e parágrafos – o material básico dos documentos do Office. Você pode receber texto por meio de um controle TextBox e fornecer à sua macro matéria-prima para processamento, comparação ou impressão de texto. Ou você pode exibir texto usando o controle TextBox, seja material de um documento existente ou informações do sistema operacional ou da própria macro. O melhor de tudo é que o controle TextBox foi projetado tendo em mente a facilidade de uso — você pode exibi-lo com ou sem barras de rolagem e pode selecionar, copiar e colar informações de e para um TextBox como um documento do Office.
Você pode configurar um objeto de caixa de texto para lidar com múltiplas linhas definindo três propriedades na janela Propriedades. Antes de definir essas propriedades, certifique-se de que o objeto caixa de texto esteja selecionado.
Na página Running Office 2000 Reader's Corner há um documento chamado Chap61.doc, que contém as duas macros desenvolvidas neste capítulo: MusicTrivia (uma macro de curiosidades) e ParaScan (um utilitário de formatação de parágrafo do Word). Se você ainda não baixou este arquivo, faça-o agora para poder executar a macro ParaScan, para a qual (devido ao seu comprimento) não fornecemos etapas de construção detalhadas. O documento Chap61 também contém texto de exemplo para a macro ParaScan.
Para saber como acessar os arquivos de exemplo na página Running Office 2000 Reader's Corner, consulte "Usando os arquivos de exemplo do livro", na Introdução.
Siga estas etapas para executar a macro ParaScan, que usa um objeto de caixa de texto para exibir cada parágrafo em um documento do Word, um por um. A macro contém os botões Avançar, Formatar e Excluir para que você possa digitalizar rapidamente o documento e fazer ajustes de formatação ou excluir rapidamente material indesejado. Ao praticar o uso do utilitário, você aprenderá mais sobre como usar o código do programa para manipular o conteúdo de um documento do Office.
NA INTERNET
A macro ParaScan está localizada no documento Chap61 na página Running Office 2000 Reader's Corner.
O Word executa a macro e exibe o ParaScan UserForm.
A macro seleciona o primeiro parágrafo no documento Chap61 e o copia para o objeto de caixa de texto no UserForm. Os quatro botões na parte inferior do UserForm descrevem suas opções nesta macro: você pode digitalizar o próximo parágrafo clicando no botão Avançar, você pode formatar o parágrafo atual clicando no botão Formatar, você pode excluir o parágrafo atual clicando no botão Excluir botão, ou você pode fechar a macro clicando no botão Sair.
Este parágrafo é muito longo para caber inteiramente na caixa de texto, mas se você clicar na caixa de texto, uma barra de rolagem vertical aparecerá para permitir a visualização do texto oculto.
A macro abre a caixa de diálogo Fonte para que você possa fazer rapidamente as alterações de formatação desejadas.
A macro formata o parágrafo selecionado conforme solicitado.
A macro destaca um novo parágrafo e o exclui quando você clica em Excluir.
Escrevemos a macro ParaScan principalmente para fins de demonstração, mas se você quiser usá-la para gerenciar seus próprios documentos, copie-a agora para o modelo Normal usando a ferramenta Organizador para poder usá-la com todos os seus documentos. (No momento, está disponível apenas no documento Chap61.)
ParaScan é uma macro de duas partes. A primeira parte é um procedimento simples de duas linhas chamado ParaScan que usa a instrução Load e o método Show para abrir e exibir a caixa de diálogo UserForm2 na tela. O verdadeiro trabalho da macro acontece na segunda parte, um UserForm personalizado contendo um procedimento de evento para cada objeto de botão de comando na interface do usuário: Próximo, Formatar, Excluir e Sair.
Algo novo que você verá nesta macro é uma variável global ou pública chamada Num, que rastreia o parágrafo atual no documento. Uma variável pública é declarada no topo de um módulo usando a palavra-chave Public, em uma seção especial chamada Declarações. Quando você declara uma variável pública em uma macro, a variável mantém seu valor em todos os procedimentos de evento da macro. Por outro lado, as variáveis ​​declaradas em um procedimento de evento são locais para o procedimento de evento, o que significa que são redefinidas sempre que um procedimento de evento é concluído.
Quando o usuário clica no botão Avançar, o procedimento de evento CommandButton1 Click é executado. Este procedimento de evento incrementa a variável Num, que rastreia o número do parágrafo atual no documento. Utilizando o número do parágrafo, a rotina seleciona o parágrafo atual e o copia para a propriedade Text do objeto TextBox1. O parágrafo atual também é exibido na legenda Label1, e se o parágrafo for o último do documento, o botão Próximo fica desabilitado. (Clicar no botão Avançar sem nenhum parágrafo restante causaria um erro em tempo de execução.)
Private Sub CommandButton1_Click() Num = Num + 1 ActiveDocument.Paragraphs(Num).Range.Select TextBox1.Text = ActiveDocument.Paragraphs(Num).Range Label1.Caption = "Parágrafo "& Num If Num = ActiveDocument.Paragraphs.Count Then CommandButton1.Enabled = Falso End If End Sub
O segundo objeto de botão de comando (Formatar) abre a caixa de diálogo Fonte interna do Word para que o usuário possa formatar o parágrafo selecionado. Uma caixa de diálogo interna é exibida quando você usa uma das constantes de caixa de diálogo do Word com a coleção Dialogs e o método Show.
Diálogos privados Sub CommandButton2_Click() (wdDialogFormatFont).Mostrar End Sub
A coleção Dialogs contém um nome constante para cada caixa de diálogo que o Word pode exibir. Para saber mais sobre essas constantes, pesquise "caixas de diálogo internas do Word, exibindo" na Ajuda online do Word Visual Basic.
O terceiro botão de comando (Excluir) exclui o parágrafo atualmente selecionado no documento do Word e está visível no objeto TextBox1. Excluir o texto é a parte fácil — uma simples questão de usar o método Delete e o intervalo ativo, como demonstra a primeira linha do procedimento de evento.
Privado Sub CommandButton3_Click() ActiveDocument.Paragraphs(Num).Range.Delete If Num >= 2 Then Num = Num - 1 ActiveDocument.Paragraphs(Num).Range.Select TextBox1.Text = ActiveDocument.Paragraphs(Num).Range Label1. Caption = "Parágrafo "& Num If Num = ActiveDocument.Paragraphs.Count Then CommandButton1.Enabled = False End If End Sub
O restante do procedimento do evento esclarece o que acontece a seguir. Se o documento contiver dois ou mais parágrafos, o novo parágrafo selecionado simplesmente se tornará o parágrafo diretamente acima. No entanto, se o documento contiver apenas um parágrafo, a contagem de parágrafos permanecerá a mesma – no Word nunca poderá haver zero parágrafos. Por fim, se o novo parágrafo ativo for o último parágrafo do documento, o botão Avançar será desabilitado para que o usuário não possa especificar um parágrafo fora do intervalo válido. (Tal ação produziria um erro em tempo de execução.)
Finalmente, o último botão de comando no UserForm (Sair) encerra a macro descarregando o UserForm. Essa técnica é sempre a melhor forma de fechar um UserForm.
Private Sub CommandButton4_Click() Descarrega UserForm2 End Sub
A macro ParaScan demonstra a interação exclusiva entre UserForms, procedimentos de eventos e elementos de documento em uma macro do Office. Você aprendeu várias habilidades necessárias para escrever suas próprias macros com aparência profissional.