• Nenhum resultado encontrado

Estando no ambiente de códigos do VBA:

CLIC no menu CLIC na opção

Observe que foi aberta a janela Referências – VBAProject

Localize na janela Referências – VBAProject a opção

Saiba que essa opção habilita a biblioteca do Microsoft Word para ser usada em nosso projeto.

Ative a opção

Excel VBA 2016

A estrutura de códigos das duas imagens anteriores contém a codificação para integração entre o Microsoft Excel e o Microsoft Word, vamos analisar essa estrutura:

As quatro primeiras linhas de nossa rotina estão sendo usadas para declaração das variáveis de nossa aplicação, que são: A linha Dim oWordApp As New Word.Application além de

fazer a declaração da variável está sendo usada para ao mesmo tempo inicializa-la, permitindo assim que o objeto possa ser utilizado.

Saiba que a palavra chave New só pode ser usada para declarar variáveis de objetos, não podendo ser usada para declarar outros tipos de dados.

A linha Dim oWordDocumento As Word.Document está

declarando a variável de criação do objeto documento do Word, ou seja, o arquivo em si.

A linha Dim oWordForma As Word.Shape está declarando a

variável de criação do objeto forma do Word, que iremos usar para definirmos a criação do gráfico de nosso relatório.

A linha Dim oGrafico As Graph.Chart está declarando a

variável de criação do objeto gráfico.

Na linha Set oWordDocumento =

oWordApp.Documents.Add estamos instanciando a variável

Excel VBA 2016

novo documento, e que esse documento possa ser editado. A linha oWordApp.Selection.Font.Bold = True está ativando o efeito Negrito.

A linha oWordApp.Selection.TypeText “Prezado Sr. “ &

vbCrlf cria o texto entre aspas no documento através do

comando TypeText do objeto Selection e aplica uma concatenação com a string de quebra de parágrafo (vbCrlf –

Visual Basic Carrier Return and Line Feed ou Visual Basic Retorno de Carro e Alimentação de Linha) ao

documento.

A linha seguinte oWordApp.Selection.Font.Bold = False desativa o efeito Negrito.

A próxima linha escreve mais um texto em nosso documento através do comando TypeText. As diferenças nesta linha são encontradas na concatenação com um valor de célula da planilha, usando como referência o endereço numerado de linha e coluna.

Nas próximas cinco linhas, teremos a criação da tabela no documento do Word. Os valores que serão buscados da planilha do Excel serão passados para o Word em formato de tabelas, e nosso primeiro passo será criar a tabela onde os dados serão armazenados.

A linha oWordDocumento.Content.Tables.Add

Excel VBA 2016

criação da tabela no Word. O item Tables.Add é o responsável pela criação da tabela. O item Selection.Range, 1, 4 define que a tabela terá uma linha e quatro colunas. Saiba que estamos definindo o número de linhas em um somente, porque não sabemos quantas linhas serão copiadas para o Word cada vez que executarmos o comando, portanto, iremos adicionar mais linhas de outra maneira, já o número de colunas será fixo, por isso o definimos com o total de colunas de nossa planilha de exemplo.

As próximas quatro linhas definem a largura (representada em pontos) de cada uma das quatro colunas da tabela que está sendo criada através da propriedade Width, sendo a primeira coluna com 100 pontos e as demais com 80 pontos cada. Saiba que se tivermos mais tabelas em nosso documento, teremos que indicar o número da tabela que estamos trabalhando, por isso, em nossa codificação foi indicado o número (1) ao lado do item Tables.

Esse número é representado pela ordem que a tabela foi inserida no documento, portanto, a primeira tabela que foi inserida é 1 a segunda é 2 e assim sucessivamente.

A linha oWordDocumento.Tables(1).Columns(2).Select, está sendo usada para selecionar a segunda coluna da tabela. A linha oWordApp.Selection.MoveRight wdCharacter, 2,

Excel VBA 2016

duas, exatamente como fazemos quando pressionamos a tecla SHIFT e usamos a tecla da direita para selecionar.

A linha oWordApp.Selection.ParagraphFormat.Alignment

= wdAlignParagraphCenter, está alinhando o conteúdo das

colunas que foram selecionadas anteriormente para o centro. Saiba que quando queremos enviar comandos para a aplicação ou simular uma ação, como por exemplo, um conjunto de teclas, enviamos a ação para o objeto Application, porém, quando queremos modificar ou inserir objetos diretamente no documento, usamos o objeto Document.

Deste modo, sempre que formos trabalhar com seleções, iremos usar o objeto Application como referência.

A linha For i = 1 To 13 inicia o laço For que percorrerá as

linhas de nossa planilha e que será utilizado para a inserção dos objetos entre nossa planilha e a tabela do documento que estamos criando.

A linha With oWordDocumento.Content.Tables(1), será utilizada para iniciar a estrutura With que irá definir o conteúdo da tabela e suas formatações. Estamos usando a estrutura With para facilitar a inserção das linhas de comandos dentro de nosso código, usando o conjunto de formatações e conteúdo todo dentro dessa única estrutura.

A linha For j = 1 To 4 inicia o laço For que irá percorrer as

Excel VBA 2016

Observe que estamos usando duas variáveis de referência para os laços For, as variáveis i e j que representam as linhas (variável i) e as colunas (variável j).

As próximas cinco linhas montam uma estrutura If, onde será analisado se a linha ou a coluna é a de número 1, caso seja, será utilizada uma determinada formatação para elas, caso não seja, será utilizada uma formatação de moeda, usando a função Format.

Saiba que dentro desta instrução If, temos algumas linhas de resultados que iniciam com ponto (.), essas linhas fazem parte da instrução With que foi iniciada anteriormente, indicando os textos e as formatações que serão inseridas na tabela que está sendo criada.

Após o Next que finaliza a segunda estrutura For, começamos mais uma estrutura If. Essa estrutura irá verificar se a linha (variável i) é a primeira ou a última de nossa estrutura, caso for, será aplicado um estilo de formatação Negrito e uma cor de fundo nas células, caso não for, não será aplicado Negrito e será definida outra cor de fundo nas células.

Para finalizarmos o laço For da primeira estrutura, temos mais uma estrutura If que irá verificar se o número da linha é diferente de 13 (que é o número de linhas de nossa planilha), caso for diferente, é adicionada uma nova linha na tabela

Excel VBA 2016

oWordDocumento.Content.Tables(1).Rows.Add.

A linha Set oWordForma =

oWordDocumento.Shapes.AddOLEObject("MSGraph.Char t", , , False, , , , 40, 400, 350, 200) está sendo feita a

inicialização do componente para criação do gráfico que será criado no documento do Word, nessa linha está sendo indicado o tipo de objeto OLE que está sendo criado, se será mostrado como ícone, sua posição X e Y e o seu tamanho em largura e altura, sendo MSGraph.Chart o tipo, False representa que não será mostrado como ícone, 40 é a posição a esquerda,

400 é a posição em relação ao Topo, 350 é a largura e 200 é

a altura do gráfico.

A linha Set oGrafico = oWordForma.OLEFormat.Object

instancia o objeto para que possamos trabalhar nele.

As próximas sete linhas (estrutura With oGrafico) definem as

propriedades do objeto usando a estrutura With para essa configuração, sendo definidos, o tamanho da fonte da área de plotagem do gráfico, o tipo de gráfico que será utilizado, se o gráfico possui ou não um título, o título que o gráfico terá e o tamanho da fonte do título.

As nove linhas seguintes (da estrutura With oGrafico.Application.DataSheet)determinam os dados para a criação do gráfico.

Excel VBA 2016

atualizam os valores do gráfico e finalizam a edição do mesmo. A próxima sequência de códigos (oWordDocumento.SaveAs

Left(ThisWorkbook.FullName,

Len(ThisWorkbook.FullName) - 4) & Format(Date, "yyyymmdd") & ".DOC", WdSaveFormat.wdFormatDocument) define a gravação do

arquivo do Word, onde temos como parâmetros o nome do arquivo, que é definido através do nome da planilha, menos os quatro últimos caracteres (que representam a extensão do arquivo do Excel - .xlsm), acrescentando a data no formato Ano, Mês e Dia e a extensão .Doc.

Na sequência, temos uma nova estrutura, que pergunta ao usuário se o mesmo deseja visualizar ou não o relatório que foi gerado, caso o usuário clique em sim, a linha

oWordApp.Visible = True é executada, caso contrário é

executada a linha oWordDocumento.Close onde o documento Word será fechado.

Por fim, os objetos que foram construídos são destruídos também pelo comando Set através da opção Nothing.

Excel VBA 2016

Documentos relacionados