Olá! Sou Roberto Sabino, instrutor aqui na Alura.
Audiodescrição: Roberto Sabino se declara como um homem de pele clara. Tem cabelos e barba curtos e grisalhos, com predominância de fios escuros. Está usando uma camiseta escura totalmente lisa e sentado em uma cadeira de enconsto preto. A parede atrás dele é lisa e está iluminada com luz LED em um degradê de azul escuro (à esquerda) para azul claro (à direita).
Estou aqui para realizarmos o nosso passo 5 da Formação VBA (Virtual Basic for Applications - Virtual Basic para Aplicações). Já aprendemos muitas coisas e este curso está especialmente interessante. Este curso é para você que está acessou e segue a nossa Formação Excel VBA!
Ele é para quem deseja aprender cada vez mais sobre como automatizar tarefas e realizar as coisas de uma maneira mais eficiente no dia a dia. Neste curso, realizaremos atividades muito interessantes.
Possuo uma planilha que contém alguns dados de clientes da ByteBank, sao eles:
A partir desses dados, executaremos uma macro que abrirá um arquivo modelo do Word e insere o nome, telefone e gerente da pessoa cliente. Depois, vai anexar esses dados a um e-mail, que será enviado para pessoa cliente. Você aprenderá a fazer todas essas coisas.
Vamos ver como funciona. Eu executei a macro para as seis pessoas clientes que temos na lista. Na pasta do meu projeto, já existem seis documentos que acabaram de ser gerados, com os dados de cada cliente. Esses documentos foram anexados em um e-mail, que está salvo, no momento, na minha caixa de rascunho. São seis e-mails criados, cada um deles contendo o e-mail da pessoa cliente no campo destinatário e o arquivo com os dados da pessoa, em anexo.
Tudo isso foi feito "automagicamente". Aprenderemos ao longo deste curso a realizar todas essas etapas, passo a passo. Além disso, aprenderemos a interagir com o Copilot para nos auxiliar a fazer o código mais rápido e para nos ajudar na automação das nossas tarefas no dia a dia.
Tenho certeza de que você deseja aprender essas coisas, e garanto que você vai conseguir aprender.
Espero você na aula 1.
Vamos começar o passo 5 da formação VBA. Você pode pensar que se o passo 4 foi pesado, o passo 5 será impossível, mas não se preocupe. Agora, entraremos em um tema um pouco mais complexo, então faremos as coisas de maneira mais devagar e explicar mais detalhadamente.
Suavizaremos o ritmo do passo 4, aonde a ideia é que você se esforçasse um pouco para ganhar mais vocabulário, mais prática e mais facilidade com o VBA. O passo 5 terá um tema um pouco controverso e, por isso, quero fazer vários acordos. Portanto, neste vídeo apenas combinaremos o que faremos durante o curso.
Primeiro de tudo, vamos conferir olhada a nossa planilha inicial, que tem as seguintes informações:
Esta planilha será automatizada ao longo do curso, e vamos gerar documentos para cada um desses clientes. Em uma pasta da minha máquina, tenho a planilha VBA 5.xlsm
e o documento Word Modelo Aviso Especial.docx
, que é um modelo. O que faremos é rodar uma "macro".
Lembrete: Conforme explicado no curso anterior desta formação, os código seráo chamados de macros, ou "macrinho", que é uma forma carinhosa de se referir à macro.
Como já expliquei na formação Excel, macro e VBA são coisas diferentes. A macro não necessariamente precisa do VBA, porque é a automação em si. Pode ser feita tanto gravando a macro, quanto fazendo um VBA. O VBA em si é mexer no código. No dia a dia, costumo chamar meus códigos VBA de "macrinho", apesar de algumas pessoas não gostarem.
No caso, chamei minha macro de GeraMalaDireta
, e qualquer pessoa que usa um pouco mais o Word pode perguntar: "Por que você vai fazer um VBA de mala direta se o Word já faz mala direta?". Em breve explicarei o motivo.
Antes disso, vou explicar o que é mala direta para quem não sabe. Ao executar o GeraMalaDireta
, perceba que temos um carregamento demorado. Quando a execução termina, podemos examinar o que essa macro gerou.
Ao abrirmos a pasta do navegador novamente, encontramos um documento para cada pessoa cliente listada na planilha. Então, nossa macro percorreu todos os clientes e recriou o que estava no modelo. Vamos abrir esse modelo para o conhecermos.
Ao abrirmos o Modelo Aviso Especial.docx
, encontramos um texto informando que a pessoa cliente foi promovida à cliente especial, só isso, nada mais. Não precisam se preocupar com o conteúdo desse texto. Entretanto, no começo da mensagem tem o nome da pessoa cliente e, no último parágrafo, temos o seguinte texto:
"Você receberá um contato através do telefone ##TELEFONE que está cadastrado em nosso banco de dados. Caso não seja mais seu telefone fale com seu gerente ##GERENTE."
Portanto, passamos o número de telefone e o nome da pessoa gerente no modelo. Perceba que criei aqui um padrão de duas hashtags (##
) como código para dizer que nessa parte do texto tem algo a ser substituído. Por exemplo, eu usei ##NOME
no começo do texto para indicar que deve trocar aquele campo pelo nome da pessoa cliente, mas você poderia usar a indicação de substituição que preferir.
No caso, ao rodarmos a nossa macro criou, ela criou um novo documento para cada cliente da lista. Podemos reparar que cada documento tem o nome formado da seguinte forma: Nome da Pessoa ClienteHorário-Da-CriaçãoModelo Aviso Especial.docx
. Por exemplo, temos o Antônio Alves10-11-46Modelo Aviso Especial.docx
.
Então começa com o nome da pessoa cliente, depois o horário em que o documento foi gerado e o nome do arquivo modelo usado. Claro que podemos mudar esse nome, e vou ensinar como fazer isso. Teremos exercícios práticos para você configurar parte desse código para ele ficar um pouco melhor e você entender como funciona.
Quando abrimos um dos documentos criados, por exemplo, o Antônio Alves10-11-46Modelo Aviso Especial.docx
, notamos que os espaços indicados com as duas hashtags (##
) foram substituídos por dados da tabela. Logo no começo o ##NOME
foi substituído por Antônio Alves
. No último parágrafo, também tivemos a substituição de ##TELEFONE
por (88) 6555-1111
e de ##GERENTE
por Maria Oliveira
. Portanto, fizemos uma mala direta.
Quero deixar bem claro que não é necessário criar esse código apenas para fazer essa função, porque o Word já tem essa funcionalidade. Ao abrirmos a janela do Word, no menu de navegação da parte superior, temos algumas opções, tal qual no Excel. Uma dessas opções é "Correspondências".
Ao clicarmos na aba "Correspondências", teremos a opções para criarmos malas diretas. No começo do menu, à esquerda, temos a opção de criar "Envelope" ou "Etiquetar" e, ao lado, temos as opções de "Iniciar Mala Direta", com os botões "Iniciar Mala Direta" e "Selecionar Destinatários". Portanto, existem várias possibilidades que conseguimos apenas com o Word.
Dica: Se você quiser apenas criar um modelo e, a partir dele, criar outros documentos, procure entender como funciona a mala direta no Word, isso vai resolver o seu problema.
Se o Word faz essa função, quando usaremos o VBA? Quando precisarmos fazer outras coisas além da mala direta. Assim, ao invés de criar a mala direta manualmente, podemos automatizar o processo de criação. Se já usamos a macro e o Excel no meu dia a dia, e temos esses dados no Excel, podemos criar uma macro que faz outras coisas, incluindo a mala direta. Nesses casos, podemos adicionar o código para criação da mala direta no Excel.
Para finalizarmos esse primeiro, quero combinar o que faremos neste curso.
Neste curso, faremos duas coisas, principalmente:
Usaremos o documento gerado e enviar diretamente por e-mail para a pessoa cliente. Claro que, para isso, precisamos do e-mail da pessoa cliente e teremos que criar um código diferente. Também precisamos nos conectar ao Outlook, e aprenderemos tudo isso durante este curso.
Eu também preciso que você saiba existem outras alternativas para fazer o que vou ensinar. Pode ser que alguém fale que você não precisa de VBA para fazer uma mala direta e enviar um e-mail para alguém cujos dados estão na planilha, é verdade. Então vamos para os nossos acordos:
Se você está dominando o VBA, pode valer a pensa usá-lo mesmo para coisas mais simples, porque você já aprendeu muitas automações. Assim você pode eliminar mais processo no seu dia a dia.
Sigamos o nosso curso com a mentalidade de que existem outras alternativas para algumas coisas que faremos com o VBA, mas é ótimo conhecer os trechos de código que você pode usar nas suas macros maiores para o dia a dia. O objetivo deste curso é conectar com outros aplicativos.
No próximo vídeo, mostrarei para você que nos outros aplicativos também temos VBA, e que pode ter algumas diferenças no VBA de outros aplicativos do Office.
Vamos relembrar o objetivo deste curso? O objetivo é conectar o Excel com outros aplicativos, via VBA.
Vamos usar outros aplicativos do Office, e você pode estar se perguntando: "não é muito complicado fazer isso?". Não, porque VBA é Visual Basic for Applications (Visual Basic para Aplicações). Isso significa que temos VBA em outras aplicações que não apenas o Excel. Não é Visual Basic for Excel, embora usemos muito mais o Excel. Tem VBA no Word, no Outlook, no Access, no PowerPoint.
Conseguimos usar o VBA nessas outras aplicações, e isso é muito importante, porque a linguagem é exatamente, apesar dos objetos serem diferentes.
Vamos lembrar do curso passado. Nele aprendemos a manipular o Object
. Descobrimos que podemos usar o As Object
ou podemos usar o Word.Application
, por exemplo. Como é um aplicativo externo, e não o Excel, optamos por começarmos criando como As Object
, para não termos que criar uma referência, e criamos como Word.application
no código. Isso funciona mais tranquilamente para todas as versões.
Depois passaremos por esse código, mas antes preciso que você entenda a ideia geral. Para isso quero mostrar uma coisa. No final do código, usamos um trecho do Word. Isso significa que estamos usando o objeto do Word.
' Realiza a operação de busca e substituição
With WordDoc.Content.Find
.Text = "#NOME"
.Replacement.Text = Cells(lContaLinhas, 2).Value
.Forward = True
.Wrap = 1 ' wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=2 ' wdReplaceAll
End With
Mas o que é objeto? Para entender, vamos conferir o VBA do Word e você notará algumas diferenças.
Estou com o documento do Antônio Alves aberto e com meu Word configurado com desenvolvedor. Para conseguir ativar o modo desenvolvedor, assim como no Excel, clicamos com o botão direito sobre as guias e selecionamos "Personalizar a Faixa de Opções".
A janela "Opções do Word" é aberta no centro da tela e, na coluna "Personalizar a Faixa de Opções", à direita, habilitamos opção "Desenvolvedor". Depois, clicamos em "Ok", no canto inferior direito da janela.
Assim, aparece a guia "Desenvolvedor", na parte superior do Word, antes da guia "Ajuda". Essa guia é muito parecida com a do Excel, mas é um pouco diferente. Se você já está fazendo macros no Excel tranquilamente, talvez ainda tenha que treinar um pouco mais para conseguir fazer macros no Word sem dificuldade.
Vamos tentar criar uma macro para entendermos. Clicamos em "Desenvolvedor > Gravar Macro", igual fazemos no Excel. Lembrando que estamos na era da inteligência artificial, então também podemos usar a inteligência artificial para criar códigos VBA em Word, apesar de ser mais raro.
Atenção: O Excel é muito mais fácil de manipular com VBA do que o Word. Se tivermos que escolher, sempre vamos fazer no Excel, mesmo que tenhamos que manipular um Word, porque as macros no Word são mais difíceis. Enquanto no Excel temos as células para localizar a informação que queremos, é muito mais difícil fazer um VBA achando as informações desejadas em um texto corrido.
Quando clicamos em "Gravar macro", abrimos a janela no centro da tela, onde nomearemos a macro. No caso, nomearemos como teste
. A primeira coisa que é diferente entre o Word e o Excel é a atribuição da macro. No WOrd, temos as opções de atribuir ao "Botão" ou ao "Teclado", o que não existe no Excel.
Outra diferença é que, por padrão, ele deixará essa macro disponível para todos os documentos, salvando a macro no Normal.dotm
, que é o nosso modelo que todo mundo usa. Se fizermos a macro assim, todo mundo que criar usar documentos baseados no Normal.dotm
poderá usar.
Essa não é uma aula de Word, mas para ter uma compreensão melhor, vamos entender um pouco como o Word funciona.
O Word tem um modelo de documento em branco. Porém, quando você começa um documento em branco, ele já tem algumas parametrizações que estão nesse modelo. Portanto, se você mudar o Normal.dotm
, todos os seus documentos vão mudar também.
A macro é uma das opções que também funciona assim, mas eu não gosto disso. Pode ser que você queira ter essa macro para todos os documentos, mas saiba que eles podem ficar pesados, e até pode estragar outro documento. Portanto, na opção "Armazenar macro em:", prefiro escolher o documento específico no qual estamos criando. Nesse caso, o documento Antônio Alves10-11-46Modelo Aviso Especial.docx
.
Ao clicarmos em "Ok", no canto inferior direito da janela, ele começa a gravar a macro. Podemos, por exemplo, selecionar o nome Antônio Alves
, no começo do documento, e voltar para ##NOME
. Também podemos selecionar "serviço bancário", no final do penúltimo parágrafo, e marcar com negrito. Feito isso, podemos voltar para a guia "Desenvolvedor" e clicar em "Parar gravação".
Vamos conferir como essa macro está. Cliquemos no botão "Visual Basic" na aba "Desenvolvedor", para abrirmos o editor "Microsoft Visual Basic for Applications". No canto superior esquerdo, já observamos o símbolo do Word, para alternarmos a janela. Além disso, estou com o editor do VBA do Excel aberto também em outra janela, e notem que ele não misturou as macros.
Portanto, se abrirmos uma nova pasta de trabalho no Excel, ela entra no editor VBA para Excel. Se abrirmos uma macro de Word, ela não vai para o editor do Excel, e sim para o editor VBA específico do Word. É como se fosse outro editor.
No editor do Word, percebemos que ele criou um módulo similar ao do editor para o Excel. Temos o explorador do projeto (Project
) e dentro dessa pasta "Módulos > NewMacros
, onde ele criou nossas macros.
No Excel, ao invés de NewMacros
ele cria como Módulo 1
. Vocês notarão que existem várias diferenças no VBA do Word. Ao abrirmos NewMacro
, encontraremos nosso código.
Sub teste()
'
' teste Macro
'
'
Selection.MoveLeft Unit:=wdWord, Count:=2, Extend:=wdExtend
Selection.TypeText Text:="#NOME"
Selection.MoveLeft Unit:=wdWord, Count:=2, Extend:=wdExtend
Selection.Font.Bold = wdToggle
End Sub
Percebam que existem algumas coisas que não vão funcionar no Excel. Este VBA, ele tem algumas coisas específicas. Por exemplo, fizemos um Selection
, que também tem no Excel, mas é um Selection
diferente. Outra coisa, ele usa as constantes wdWord
, porque é uma constante do Word. Se usarmos essa mesma constante no Excel, não vai funcionar.
E outra coisa é que esta Selection
se refere ao documento. Então, algumas coisas que esta Selection
tem, como o TypeText
, não vão funcionar lá no Excel. Resumindo: a linguagem é a mesma, então podemos usar If
, repetições como for
e for each
, do while
, entre outras coisas. Entretanto, os objetos são diferentes.
Então, enquanto no editor VBA do Excel temos EstaPastaDeTrabalho
, que sabemos que é um Workbook, no editor VBA do Word temos um Document. Não podemos usar o Workbook no VBA do Word, porque ele é um objeto que representa uma pasta de trabalho do Excel.
Já o Document é um objeto que representa um documento do Word. Então, para ser fluente nas linguagens VBA do Excel e do Word, você tem que conhecer os objetos do Word e os do Excel. Por isso, não recomendamos que você tente ficar fazendo macros diretamente no Word.
Já fizemos um tour no Word e entendemos que podemos gravar macros por lá, mas não faremos isso. Voltando ao nosso bom e velho amigo Excel, mais especificamente no editor VBA do Excel, criaremos um objeto Word, codando CreateObject("Word.Application")
.
Observação: No próximo vídeo analisaremos o código VBA do Excel com mais detalhes.
Quando setarmos esse objeto, como aprendemos no curso anterior, ou seja, codando Set WordApp = CreateObject("Word.Application")
, teremos o objeto WordApp
. Esse WordApp
tem Documents
dentro dele.
Então, quando criarmos no Excel um objeto Word, ele passará a se comportar como se ele estivesse lá no VBA do Word. Assim, conseguimos manipular algumas coisas deste objeto com a "linguagem do Word", entre aspas.
Você de estar achando essa explicação um pouco complicada, mas tenha calma. No próximo vídeo analisaremos o código e entender o que ele está fazendo. Também deixarei uma atividade "mão na massa" para a próxima aula.
Pode se tranquilizar que eu vou avançar mais devagar nesse curso. A ideia é que avancemos um pouco mais devagar para nos aprofundarmos nos detalhes e aprendermos muitas coisas.
O curso VBA : integrando Outlook com IA's possui 170 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:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Acesso completo
durante 1 ano
Estude 24h/dia
onde e quando quiser
Novos cursos
todas as semanas