Como abrir e preencher o modelo com o Excel VBA

Compartilhe agora:

Os modelos do Excel geralmente são pastas de trabalho, com uma estrutura de relatórios, geralmente suportadas por funções. Um modelo (xltx) pode ser usado repetidamente sem poluir com dados. Após o preenchimento com dados, uma pasta de trabalho modelo é salva como um xlsx, preservando o estado virgem do próprio xltx.

Neste exercício, usaremos o código VBA para abrir e preencher um modelo. O modelo pode ser encontrado aqui e Excel Macro usado pode ser encontrado aqui.

Este artigo pressupõe que o leitor tenha a faixa Desenvolvedor exibida e esteja familiarizado com o Editor VBA. Se não, por favor, Google “Excel Developer Tab” ou “Excel Code Window”.

O modelo

Primeiro, vamos construir um modelo fictício, preenchido com dados, uma tabela dinâmica e um gráfico, como segue:

Abra um novo arquivo do Excel. Renomeie “Sheet1” como “Chart” e “Sheet2” como “Data”

Copie o seguinte texto, incluindo títulos, em D1 da guia “Dados”:

Direcção JobRef Gênero
Filhos e Família CH SW2588 Feminino
Filhos e Família CH RS2775 Feminino
Filhos e Família CH SW2630 Feminino
Filhos e Família CH RS2775 Masculino
Filhos e Família CH CC2628 Feminino
Filhos e Família CHHT2579 Feminino
Saúde da comunidade CWT(2559 Feminino
Saúde da comunidade CWQS2774 Feminino
Saúde da comunidade CW O2745 Masculino
Meio Ambiente EE SM2814 Feminino
Meio Ambiente EE IT2772 Masculino
Meio Ambiente EE SO2784 Masculino
Recursos RSCO2557 Feminino
Recursos RSHO2539 Masculino

Selecione todos os dados, incluindo os cabeçalhos das colunas, e insira uma tabela dinâmica em A1 da planilha “Dados”, conforme mostrado abaixo.Inserir uma tabela dinâmica em A1 da folha de "dados"

Crie um gráfico na guia “Gráfico”, usando a tabela dinâmica como fonte de dados.Crie um gráfico na guia "Gráfico"

Remova os dados em D2:F15. Não é necessário redefinir o intervalo de dados da tabela dinâmica; deixe-o preenchido mesmo que não haja dados.  Remova os dados em D2:F15

Salve a pasta de trabalho como “VacancyTemplate.xltx.” em um subdiretório daquele em que a pasta de trabalho da macro deve residir. Responda "Não" a qualquer alerta do Excel durante o salvamento.

Também precisaremos de um subdiretório Reports. Por exemplo:

Relatórios Excel (xlsm armazenado aqui)

|_Modelos (xlxt armazenado aqui)

       |_Relatórios (cada xlsx salvo aqui)

Uma vez salvo como um xltx, feche o modelo

A macro

Abra uma nova pasta de trabalho para manter nosso código. Renomeie “Sheet1” como “Main” e “Sheet2” como “Database”.

Coloque um botão em “Principal” para conduzir o aplicativo.

Normalmente, os dados são recuperados de bancos de dados. Como nem todo mundo tem um banco de dados à mão, a folha “Banco de dados” irá emular uma tabela de banco de dados.

Copie os dados encontrados no start deste artigo na aba “Database” em A1…Copie os dados encontrados no Start deste artigo na guia banco de dados em A1

O código

A estrutura de código abaixo define claramente os processos:

  • Obtenha os dados do “banco de dados”;
  • Abra o modelo;
  • Preencha o modelo com os dados e redefina o intervalo de dados da tabela dinâmica;
  • Salve o modelo como um relatório
Opção Explicit 'Cria objetos para representar a pasta de trabalho e planilhas modelo Public wb As Object Public XL As Object Public connDB As New ADODB.Connection Public rs As ADODB.Recordset Public eRow As Integer Public eRec As Integer Public dDate As String Sub openWorksheet() Call GetData Call OpenTemplate Call PopulateTemplate 'Salvar modelo como xlsx com carimbo de data No erro Resume Next dDate = Format(Now(), "yyyy.mm.dd") wb.SaveAs Filename:=ActiveWorkbook.Path & "\Reports\Vacancies" & dDate & ".xlsx", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False Sheets("Main").Activate 'Remover a guia do banco de dados wb.Activate 'Trazer o gráfico para o primeiro plano Set wb = Nothing Set XL = Nothing Set rs = Nothing Set connDB = Nothing End Sub Sub GetData() 'Emula a recuperação do banco de dados If connDB.State = 1 Then connDB.Close Sheets("Banco de Dados").Activate Sheets("Banco de Dados").Range("A1").Selecione Seleção. End(xlDown).Select eRec = ActiveCell.Row - 1 'estabelece quantos registros haverá no conjunto de registros 'Esta etapa não será necessária em um ambiente de banco de dados eRow = ActiveCell.Row 'a linha final, usada posteriormente no modelo connDB.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & ActiveWorkbook.FullName & ";" & _ "Propriedades estendidas=Excel 12.0;" Set rs = New ADODB.Recordset rs.Open "Select top " & eRec & " * from [Database$]", connDB, , , adCmdText End Sub Sub OpenTemplate() Set XL = CreateObject("Excel.Application") XL. Visible = True 'nos permite ver o que está acontecendo na depuração. XL.Workbooks.Add ActiveWorkbook.Path & "\Templates\VacancyTemplate.xltx" Set wb = XL.ActiveWorkbook 'a nova pasta de trabalho é referenciada por "wb" End Sub Sub PopulateTemplate() wb.Sheets("Data").Activate wb .Sheets("Data").Range("D2").CopyFromRecordset rs wb.Sheets("Data").Range("A1").Selecione 'redimensionar o intervalo que direciona a tabela dinâmica, usando a variável eRow. wb.Sheets("Dados").PivotTables("Tabela Dinâmica1").ChangePivotCache wb. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Data!R1C4:R" & eRow & "C6", _ Version:=xlPivotTableVersion14) wb.Sheets("Chart").Select End Sub

Objetos de dados ActiveX

Para simular uma leitura de banco de dados, devemos referenciar a biblioteca Active Xrary. Faça isso através de Ferramentas>Referências na janela de código.Referência O Active X Library

Teste o código

Atribua o botão em “Principal” para Sub Openworkbook. Salve a pasta de trabalho como “Populated Templates.xlsm”.

FECHE a pasta de trabalho e abra-a novamente.

Pressione o botão para ver o resultado. Aumente o número de linhas de dados em “Database” e execute novamente, verificando se o Gráfico foi atualizado com as informações adicionais.

No código acima, mostramos o modelo inicial, com XL.Visível = Verdadeiro. No ambiente ao vivo, isso pode ser feito no final, para que as atualizações de tela não fiquem visíveis.

Lide com o desastre de dados!

Poucas coisas são mais frustrantes do que um arquivo do Excel muito desenvolvido travando, corrompendo o arquivo de origem e sem nenhuma cópia de backup disponível. Nesses casos, onde o Excel não consegue recuperar o arquivo danificado, todo o trabalho feito nele é lost a menos que você tenha uma ferramenta útil para corrigir Excel arquivos.

Também é prudente fazer backup com frequência de um trabalho valioso.

Introdução do autor:

Felix Hooker é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo rar reparar e produtos de software de recuperação SQL. Para mais informações visite www.datanumen.com

Compartilhe agora:

Comentários estão fechados.