Alura > Cursos de Data Science > Cursos de Excel > Conteúdos de Excel > Primeiras aulas do curso Agilidade financeira: automatizando relatórios e tarefas com VBA e TypeScript

Agilidade financeira: automatizando relatórios e tarefas com VBA e TypeScript

Começando no VBA - Apresentação

Olá, sou o Roberto Sabino, instrutor aqui na Alura, e estamos aqui para aprender a automatizar tarefas com VBA e Inteligência Artificial.

Audiodescrição: Roberto se descreve como um homem de pele clara, com cabelo e barba escuros e curtos, levemente grisalhos, e olhos castanho-escuros. Ele veste uma camiseta preta lisa, e está sentado em frente a uma parede clara iluminada em gradiente azul.

Este curso é para quem deseja aprender a automatizar tarefas, aumentar a produtividade e entender como a Inteligência Artificial pode ajudar no dia a dia, especialmente no departamento de finanças.

Vamos explorar como podemos nos beneficiar da Inteligência Artificial, como pegar uma base de dados, dividir essa base, gerar arquivos para enviar a diferentes pessoas e criar e-mails automaticamente.

Durante o curso, aprenderemos a criar prompts estruturados e resolver problemas que podem surgir no dia a dia do nosso departamento de finanças.

Este curso é projetado para proporcionar uma aprendizagem ativa. Logo, você irá interagir com os conteúdos e poderá aplicá-los em seu dia a dia. Em algumas aulas, você terá a oportunidade de realizar atividades por conta própria, e depois mostraremos como proceder, garantindo que sempre estaremos trabalhando com os conteúdos. É fundamental participar ativamente.

Lembre-se! Você tem acesso ao fórum e ao Discord da Alura, onde pode interagir com outras pessoas estudantes e esclarecer suas dúvidas, promovendo uma aprendizagem ainda mais ativa.

Vamos começar nossa jornada de automação de tarefas com VBA e Inteligência Artificial!

Começando no VBA - Primeiro código com VBA

Vamos iniciar nossa jornada de automação e tratamento de dados utilizando Excel, VBA e um pouco de TypeScript!

No início do curso, é importante fazermos algumas considerações.

Muitas pessoas têm resistência em aprender VBA (Visual Basic for Application), seja por acharem complexo, ultrapassado ou por acreditarem que não será útil no dia a dia.

No entanto, grandes empresas e equipes que lidam com grandes volumes de dados costumam utilizar VBA. Isso porque o VBA pode ser um auxiliar importante para outras funcionalidades, como Power Query, Power Pivot e tabelas dinâmicas.

Além disso, o VBA permite realizar tarefas que seriam impossíveis sem ele. Com o advento da inteligência artificial, o VBA se tornou ainda mais poderoso, pois a inteligência artificial consegue programar VBA de forma muito eficiente.

Neste curso, começaremos do zero, apresentando o que é o VBA. Na primeira aula, faremos isso.

Em seguida, utilizaremos a inteligência artificial para realizar tarefas mais avançadas rapidamente.

Precisamos apenas de sua confiança para entender que o início pode ser um pouco monótono, mas é necessário para que você compreenda a parte que envolve inteligência artificial, que será um divisor de águas no seu conhecimento de VBA.

Na plataforma Alura, temos uma formação em VBA que vai do básico ao avançado. O objetivo deste curso é que você consiga aplicar o VBA no departamento de finanças, pelo menos no nível inicial.

Vamos começar!

Utilizaremos o arquivo arquivo-vendas.csv que usamos no segundo passo da nossa formação Tech para Finanças.

Apenas abriremos o arquivo, sem usar o Power Query.

É importante entender que usar Power Query e VBA juntos pode ser complicado, pois o Power Query já realiza algum nível de automação. Normalmente, utilizamos o VBA quando os dados já estão no Excel. É possível usar ambos juntos, mas é mais complexo.

Vamos imaginar que alguém nos pediu para passar os dados para a equipe que faz os relatórios. Eles utilizam o código da empresa com um prefixo "EMP_". Por exemplo, EMP_1000.

Como você faria isso?

Se fosse uma tarefa única, poderíamos fazer manualmente. No entanto, estamos aqui para aprender a fazer isso com VBA.

Para começar com VBA, acesse a aba "Desenvolvedor". Se não estiver visível, clique com o botão direito, personalize a faixa de opções e ative a guia "Desenvolvedor".

Em seguida, selecione a opção "Gravar Macro". Ao gravar uma macro, o Excel registra o código VBA correspondente às ações realizadas. Vamos nomear a macro como Altera_Codigo_Empresa, evitando espaços e caracteres especiais. É possível adicionar uma descrição para que outras pessoas entendam o que a macro faz.

Após clicar em "OK", tudo o que fizermos será gravado. Portanto, é importante não realizar ações desnecessárias.

Vamos escrever "EMP_" na célula A2, na frente do 1000, e parar a gravação imediatamente. O código gerado pode ser visualizado no editor de Visual Basic, acessível pela aba "Desenvolvedor".

No editor, temos o "Project Explorer" à esquerda, onde estão os objetos da pasta de trabalho e os módulos de código do VBA. Módulo é uma folha em branco onde vamos escrever nossos códigos.

Vejamos o código que foi gerado com a gravação da macro:

Sub Altera_Codigo_Empresa()
'
' Altera_Codigo_Empresa Macro
' Coloca a literal "EMP_" antes do código da empresa.
'
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "EMP_1000"
    Range("A3").Select
End Sub

Temos a descrição e o código que faz o que nós executamos. Mas o código gerado pela gravação da macro pode ser simplificado.

Próximo passo

No próximo vídeo, aprenderemos como simplificar e utilizar esse código no dia a dia.

Estamos avançando devagar para que todos possam acompanhar. A partir da segunda aula, avançaremos mais rapidamente no VBA.

No próximo vídeo, aprenderemos como modificar e aplicar o código gerado!

Começando no VBA - Criando uma repetição

Já realizamos o primeiro "gravar macro" e, na verdade, o "gravar macro" vai te salvar várias vezes.

Porque mesmo utilizando a inteligência artificial, às vezes precisamos de algo muito específico e a inteligência artificial está demorando para responder. O "gravar macro" consegue capturar o código específico do que queremos fazer. Talvez seja necessário fazer alguns ajustes, inserir em outro trecho de código de inteligência artificial e realizar o que precisamos.

Para isso, é preciso ter uma base mínima de VBA, que é o que vamos ver neste curso.

Vamos continuar no nosso ritmo da primeira aula, pois quero que você aprenda muito bem esses fundamentos!

Vamos analisar esse código.

Sub Altera_Codigo_Empresa()
'
' Altera_Codigo_Empresa Macro
' Coloca a literal "EMP_" antes do código da empresa.
'
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "EMP_1000"
    Range("A3").Select
End Sub

A primeira coisa que você precisa saber é que o nome da macro sempre aparecerá depois da palavra Sub.

As palavras em azul são chamadas palavras reservadas e são comandos que o VBA entende.

Sub, você vai entender que é macro. Sempre que você escrever Sub, está criando uma nova macro, e então você coloca os parênteses na frente depois do nome da macro.

Em seguida, temos as descrições que nós inserimos e sempre que você coloca uma ' aspa simples, um apóstrofo, está fazendo um comentário. Você pode escrever o que quiser. Porque isso não é código, é apenas um comentário.

Você pode comentar todo o seu código, é uma boa prática.

A parte que está sem as aspas simples é o seu código propriamente dito.

Nessa parte temos comandos que o Excel reconhece.

Rangeé um objeto que representa as células ou um conjunto de células. Então, quando escrevemos Range("A2"), é a mesma coisa que escrever "célula A2".

Select é selecionar. O VBA é uma linguagem muito simples. É em inglês, então, se você não conhece inglês, talvez tenha um pouco de dificuldade no começo, mas é só se acostumar com as palavras. Então, Range("A2").Select é o mesmo que "selecione a célula A2".

O que é ActiveCell? É Célula ativa. FormulaR1C1 é a fórmula que está dentro da ActiveCell. E ele está recebendo "EMP_1000".

Na verdade, ela não está fazendo exatamente o que queríamos, ela está colocando uma literal EMP_1000 dentro da célula.

Depois, está selecionando a célula A3, porque foi o que eu fiz logo depois, ou seja, isso aqui nós já podemos deletar, vamos deletar o trecho Range("A3").Select porque não precisamos disso para o nosso resultado.

Quero que você observe duas coisas importantes.

Primeiro, se deixar desse jeito, ele sempre vai fazer só na célula A2.

E ele está fazendo aqui algo que não é o que queremos. Temos outros valores além de 1000 nessa coluna, lá embaixo tem, por exemplo, células com 2000. Então precisamos inserir EMP_ junto a o que já temos dentro da célula.

Podemos dizer que queremos EMP_ concatenado com activecell.Value, ou seja, o valor da célula ativa no momento.

Range("A2").Select
ActiveCell.FormulaR1C1 = "EMP_" & ActiveCell.Value

Vamos verificar se isso funciona.

Eu vou executar de novo, mas sempre que executar isso ele vai colocar um EMP_ a mais na célula. Isso é um problema, vamos resolver esse problema depois, certo? Não se preocupe com esse problema agora.

Não queremos fazer isso só para a célula A2, queremos fazer para várias células.

Agora, vou ensinar um comando que não usaremos muito, mas é importante que você entenda.

Comando For

No VBA, para ter sucesso, é necessário saber como fazer repetições, ou seja, realizar a mesma ação várias vezes. Para isso, existe um loop que é o mais simples de todos, o comando for.

Vamos criar uma variável de contagem, chamada var_cont, para não ficar muito extenso. Então, for var_cont indo de 2 até, até onde eu tenho que ir? Quero ir até o final, até a linha 1.708. Então, vou colocar, para o var_cont indo de 2 até 1.708, quero fazer alguma coisa e depois quero ir para o next var_cont, ou seja, para a próxima variável var_cont.

For var_cont = 2 to 1708

Next var_cont

No código que fizemos anteriormente, vamos tirar o A2 e concatenar com var_cont.

For var_cont = 2 To 1708
    Range("A" & var_cont).Select
    ActiveCell.FormulaR1C1 = "EMP_" & ActiveCell.Value
Next var_cont

Provavelmente vai funcionar. Tem problemas no código ainda, mas vamos resolver depois.

Então, vamos rodar o nosso código e agora, o que será que vai acontecer? Preste atenção na coluna A, o que vai acontecer na coluna A, vamos executar? Ele colocou corretamente o EMP_ na frente dos valores da coluna A.

Mas tem um detalhe, cada vez que executar, ele vai adicionar um EMP_.

Atenção: O atalho "Ctrl + Z" não funciona quando rodamos a macro. Se não tiver uma cópia e você rodar uma macro que destrua a sua planilha, você vai ter que sair sem salvar, se você tiver com salvamento automático, você vai ter que mudar a versão.. Então, cuidado, faça um backup.

Outra coisa é, você reparou que ele demorou muito para fazer o que queríamos? Ele ficou selecionando.

Não precisamos ficar selecionando as células.

E aqui é a primeira dica que vou dar, se você é uma pessoa usuária já mais avançada de VBA, tem um erro muito grande nesse código, que é o seguinte, não devemos quase nunca usar o Select, porque o Select faz demorar.

Vamos comparar agora, vou tirar o Select, em vez de selecionar, vamos fazer esse fórmulaR1C1 no lugar do Select.

For var_cont = 2 To 1708
    Range("A" & var_cont).FormulaR1C1 = "EMP_" & ActiveCell.Value
Next var_cont

Dessa forma a execução é muito mais rápida.

Próximo passo

Esse código já nos ajuda, mas ainda queremos que ele pare de adicionar EMP_ toda vez que for executado. Vamos continuar no próximo vídeo.

Sobre o curso Agilidade financeira: automatizando relatórios e tarefas com VBA e TypeScript

O curso Agilidade financeira: automatizando relatórios e tarefas com VBA e TypeScript possui 118 minutos de vídeos, em um total de 44 atividades. Gostou? Conheça nossos outros cursos de Excel em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Excel acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas