Introdução ao VBA no OfficeGetting started with VBA in Office

Você está enfrentando uma limpeza repetitiva de cinquenta tabelas no Word?Are you facing a repetitive clean up of fifty tables in Word? Você deseja que um documento específico solicite que o usuário forneça informações quando ele for aberto?Do you want a particular document to prompt the user for input when it opens? Você está tendo dificuldade para saber como colocar seus contatos do Microsoft Outlook em uma planilha do Microsoft Excel de maneira eficiente?Are you having difficulty figuring out how to get your contacts from Microsoft Outlook into a Microsoft Excel spreadsheet efficiently?

Você pode executar essas tarefas e fechar bons negócios usando o Visual Basic for Applications (VBA) para Office − uma linguagem de programação—simples, mas poderosa, que você pode usar para estender aplicativos do Office.You can perform these tasks and accomplish a great deal more by using Visual Basic for Applications (VBA) for Office—a simple, but powerful programming language that you can use to extend Office applications.

Este artigo é indicado para usuários experientes do Office que querem aprender sobre o VBA e para quem deseja entender um pouco sobre como a programação pode ajudar na personalização do Office.This article is for experienced Office users who want to learn about VBA and who want some insight into how programming can help them to customize Office.

O pacote de aplicativos do Office tem um sofisticado conjunto de recursos.The Office suite of applications has a rich set of features. Há muitas maneiras diferentes de criar, formatar e manipular documentos, emails, bancos de dados, formulários, planilhas e apresentações.There are many different ways to author, format, and manipulate documents, email, databases, forms, spreadsheets, and presentations. A grande vantagem da programação em VBA no Office é que quase todas as operações que podem ser executadas com um mouse, teclado ou uma caixa de diálogo também podem ser realizadas usando o VBA.The great power of VBA programming in Office is that nearly every operation that you can perform with a mouse, keyboard, or a dialog box can also be done by using VBA. Além disso, se a operação pode ser realizada uma vez com o VBA, ela pode ser feita com a mesma facilidade centenas de vezes.Further, if it can be done once with VBA, it can be done just as easily a hundred times. Na verdade, a automatização de tarefas repetitivas é um dos usos mais comuns do VBA no Office.(In fact, the automation of repetitive tasks is one of the most common uses of VBA in Office.)

Além da capacidade de criar scripts com o VBA para acelerar as tarefas diárias, use o VBA para adicionar novas funcionalidades a aplicativos do Office ou solicitar e interagir com as pessoas que usam seus documentos de formas específicas para atender às suas necessidades de negócios.Beyond the power of scripting VBA to accelerate every-day tasks, you can use VBA to add new functionality to Office applications or to prompt and interact with the user of your documents in ways that are specific to your business needs. Por exemplo, você poderia gravar um código VBA que exibisse um mensagem popup lembrando os usuários de salvar um documento em uma determinada unidade de rede na primeira vez que eles tentassem salvá-lo.For example, you could write some VBA code that displays a pop up message that reminds users to save a document to a particular network drive the first time they try to save it.

Este artigo explora algumas das principais razões para aproveitar a capacidade de programação em VBA.This article explores some of the primary reasons to leverage the power of VBA programming. Ele explora a linguagem VBA e as ferramentas prontas que podem ser usadas para trabalhar com suas soluções.It explores the VBA language and the out-of-the-box tools that you can use to work with your solutions. Por fim, ele inclui algumas dicas e formas de evitar algumas frustrações e equívocos comuns que acontecem na programação.Finally, it includes some tips and ways to avoid some common programming frustrations and missteps.

Observação

Interessado em desenvolver soluções que ampliem a experiência do Office em várias plataformas?Interested in developing solutions that extend the Office experience across multiple platforms? Confira o novo modelo de Suplementos do Office.Check out the new Office Add-ins model. Os suplementos do Office têm um pequeno espaço comparado aos suplementos e soluções do VSTO, e você pode criá-los usando quase qualquer tecnologia de programação Web, como HTML5, JavaScript, CSS3 e XML.Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

Quando e por que usar o VBAWhen to use VBA and why

Há três razões principais para considerar a programação em VBA no Office.There are several principal reasons to consider VBA programming in Office.

Automação e repetiçãoAutomation and repetition

O VBA é eficiente quando se trata de soluções repetitivas para problemas de formatação ou correção.VBA is effective and efficient when it comes to repetitive solutions to formatting or correction problems. Por exemplo, você já alterou o estilo do parágrafo no topo de cada página no Word?For example, have you ever changed the style of the paragraph at the top of each page in Word? Você já precisou reformatar várias tabelas que foram coladas do Excel em um documento do Word ou em um email do Outlook?Have you ever had to reformat multiple tables that were pasted from Excel into a Word document or an Outlook email? Você já precisou fazer a mesma alteração em vários contatos do Outlook?Have you ever had to make the same change in multiple Outlook contacts?

Se existe uma alteração que precisa ser feita mais de dez ou vinte vezes, talvez valha a pena automatizá-la com o VBA.If you have a change that you have to make more than ten or twenty times, it may be worth automating it with VBA. Se é uma alteração que precisa ser feita centenas de vezes, merece sem dúvida ser considerada.If it is a change that you have to do hundreds of times, it certainly is worth considering. Quase todas as alterações de formatação ou de edição que podem ser feitas manualmente podem ser feitas no VBA.Almost any formatting or editing change that you can do by hand, can be done in VBA.

Extensões para a interação do usuárioExtensions to user interaction

Há ocasiões em que você deseja incentivar ou obrigar os usuários a interagir com um documento ou aplicativo do Office de determinada forma que não faça parte do aplicativo padrão.There are times when you want to encourage or compel users to interact with the Office application or document in a particular way that is not part of the standard application. Por exemplo, você pode pedir aos usuários para executar uma ação específica ao abrir, salvar ou imprimir um documento.For example, you might want to prompt users to take some particular action when they open, save, or print a document.

Interação entre aplicativos do OfficeInteraction between Office applications

Você precisa copiar todos os seus contatos do Outlook para o Word e, em seguida, formatá-los de alguma maneira específica?Do you need to copy all of your contacts from Outlook to Word and then format them in some particular way? Ou precisa mover dados do Excel para um conjunto de slides do PowerPoint?Or, do you need to move data from Excel to a set of PowerPoint slides? Às vezes, o simples ato de copiar e colar não produz o resultado desejado ou é muito lento.Sometimes simple copy and paste does not do what you want it to do, or it is too slow. Use a programação em VBA para interagir com os detalhes de dois ou mais aplicativos do Office ao mesmo tempo e modificar o conteúdo de um aplicativo com base no conteúdo contido em outro aplicativo.You can use VBA programming to interact with the details of two or more Office applications at the same time and then modify the content in one application based on the content in another.

Fazendo as coisas de outra formaDoing things another way

A programação em VBA é uma solução poderosa, mas nem sempre é a melhor abordagem.VBA programming is a powerful solution, but it is not always the optimal approach. Às vezes, faz sentido usar outros recursos para atingir seus objetivos.Sometimes it makes sense to use other ways to achieve your aims.

A principal pergunta a ser feita é se há uma maneira mais fácil.The critical question to ask is whether there is an easier way. Antes de começar um projeto do VBA, considere as ferramentas internas e as funcionalidades padrão.Before you begin a VBA project, consider the built-in tools and standard functionalities. Por exemplo, se você tem em mãos uma tarefa demorada de layout ou edição, considere o uso de estilos ou teclas aceleradoras para solucionar o problema.For example, if you have a time-consuming editing or layout task, consider using styles or accelerator keys to solve the problem. É possível executar a tarefa uma vez e depois usar Ctrl+Y (Refazer) para repeti-la?Can you perform the task once and then use CTRL+Y (Redo) to repeat it? É possível criar um novo documento com o formato ou modelo correto e, em seguida, copiar o conteúdo para esse novo documento?Can you create a new document with the correct format or template, and then copy the content into that new document?

Os aplicativos do Office são poderosos. A solução de que você precisa talvez já esteja disponível.Office applications are powerful; the solution that you need may already be there. Dedique algum tempo para saber mais sobre o Office antes de começar a programar.Take some time to learn more about Office before you jump into programming.

Antes de começar um projeto VBA, verifique se você tem tempo para trabalhar com o VBA.Before you begin a VBA project, ensure that you have the time to work with VBA. Programar requer foco e pode ser imprevisível.Programming requires focus and can be unpredictable. Especialmente se for iniciante, nunca comece a programar a menos que você tenha tempo para trabalhar com toda a atenção.Especially as a beginner, never turn to programming unless you have time to work carefully. Tentar gravar um "script rápido" para resolver um problema quando uma data limite se aproxima pode levar a situações muito estressantes.Trying to write a "quick script" to solve a problem when a deadline looms can result in a very stressful situation. Se você está com pressa, use métodos convencionais, mesmo que sejam monótonos e repetitivos.If you are in a rush, you might want to use conventional methods, even if they are monotonous and repetitive.

Programação em VBA 101VBA Programming 101

Usando códigos para fazer com que aplicativos realizem tarefasUsing code to make applications do things

Você pode achar que escrever códigos é algo misterioso ou difícil, mas os princípios básicos usam raciocínios comuns e são bastante acessíveis.You might think that writing code is mysterious or difficult, but the basic principles use every-day reasoning and are quite accessible. Os aplicativos do Microsoft Office são criados de forma a expor itens chamados objetos. Esses itens podem receber instruções da mesma forma que um telefone faz quando você usa seus botões.Microsoft Office applications are created in such a way that they expose things called objects that can receive instructions, in much the same way that a phone is designed with buttons that you use to interact with the phone. Quando você pressiona um botão, o telefone reconhece a instrução e inclui o número correspondente na sequência que você está discando.When you press a button, the phone recognizes the instruction and includes the corresponding number in the sequence that you are dialing. Em programação, você interage com o aplicativo enviando instruções a vários objetos no aplicativo.In programming, you interact with the application by sending instructions to various objects in the application. Esses objetos são expansivos, mas têm limites.These objects are expansive, but they have their limits. Eles só podem fazer aquilo que foram projetados para fazer e farão apenas o que você os instruir a fazer.They can only do what they are designed to do, and they will only do what you instruct them to do.

Por exemplo, pense em um usuário que abre um documento no Word, faz algumas alterações, salva o documento e, em seguida, fecha-o.For example, consider the user who opens a document in Word, makes a few changes, saves the document, and then closes it. No mundo da programação em VBA, o Word expõe um objeto Document.In the world of VBA programming, Word exposes a Document object. Usando o código VBA, você pode instruir o objeto Document a fazer coisas como abrir, salvar ou fechar.By using VBA code, you can instruct the Document object to do things such as Open, Save, or Close.

A seção a seguir discute como os objetos são organizados e descritos.The following section discusses how objects are organized and described.

O modelo de objetoThe Object Model

Desenvolvedores organizam os objetos de programação em uma hierarquia chamada de modelo de objeto do aplicativo.Developers organize programming objects in a hierarchy, and that hierarchy is called the object model of the application. O Word, por exemplo, tem um objeto Application de nível superior que contém um objeto Document.Word, for example, has a top-level Application object that contains a Document object. O objeto Document contém objetos Paragraph e assim por diante.The Document object contains Paragraph objects and so on. Os modelos de objeto espelham praticamente aquilo que você vê na interface do usuário.Object models roughly mirror what you see in the user interface. Eles são um mapa conceitual do aplicativo e seus recursos.They are a conceptual map of the application and its capabilities.

A definição de um objeto é chamada de classe, portanto, você pode ver esses dois termos.The definition of an object is called a class, so you might see these two terms used interchangeably. Tecnicamente, uma classe é a descrição ou o modelo usado para criar, ou instanciar, um objeto.Technically, a class is the description or template that is used to create, or instantiate, an object.

Depois que um objeto existe, é possível manipulá-lo definindo suas propriedades e chamando seus métodos.Once an object exists, you can manipulate it by setting its properties and calling its methods. Se você pensar no objeto como um substantivo, as propriedades são os adjetivos que descrevem o substantivo e os métodos são os verbos que dão vida ao substantivo.If you think of the object as a noun, the properties are the adjectives that describe the noun and the methods are the verbs that animate the noun. Ao alterar uma propriedade, você altera algumas qualidades da aparência ou do comportamento do objeto.Changing a property changes some quality of appearance or behavior of the object. Chamar um dos métodos do objeto faz com que o objeto execute alguma ação.Calling one of the object methods causes the object to perform some action.

O código VBA neste artigo é executado em um aplicativo aberto do Office em que muitos dos objetos que o código manipula já se encontram em execução. Por exemplo, os objetos Application, Worksheet no Excel, Document no Word, Presentation no PowerPoint, Explorer e Folder no Outlook.The VBA code in this article runs against an open Office application where many of the objects that the code manipulates are already up and running; for example, the Application itself, the Worksheet in Excel, the Document in Word, the Presentation in PowerPoint, the Explorer and Folder objects in Outlook. Após conhecer o layout básico do modelo de objeto e algumas propriedades importantes de Application que dão acesso ao seu estado atual, é possível começar a estender e manipular esse aplicativo do Office com o VBA no Office.Once you know the basic layout of the object model and some key properties of the Application that give access to its current state, you can start to extend and manipulate that Office application with VBA in Office.

MétodosMethods

No Word, por exemplo, você pode alterar as propriedades e chamar os métodos do documento atual do Word, usando a propriedade ActiveDocument do objeto aplicativo.In Word, for example, you can change the properties and invoke the methods of the current Word document by using the ActiveDocument property of the Application object. Essa propriedade ActiveDocument retorna uma referência para o objeto documento que está ativo no aplicativo do Word.This ActiveDocument property returns a reference to the Document object that is currently active in the Word application. "Retorna uma referência para" significa "oferece acesso a"."Returns a reference to" means "gives you access to."

O código a seguir faz exatamente aquilo que ele diz, ou seja, salva o documento ativo no aplicativo.The following code does exactly what it says; that is, it saves the active document in the application.

Application.ActiveDocument.Save

Leia o código da esquerda para a direita, "Neste aplicativo, com documento referenciado pelo ActiveDocument, use o método Salvar."Read the code from left to right, "In this Application, with the Document referenced by ActiveDocument, invoke the Save method." Lembre-se de que Salvar é a forma mais simples do método e não exige que você forneça instruções detalhadas.Be aware that Save is the simplest form of method; it does not require any detailed instructions from you. Você instrui um objeto documento para Salvar, e ele não exige mais informações.You instruct a Document object to Save and it does not require any more input from you.

Quando um método exige mais informações, esses detalhes são chamados de parâmetros.If a method requires more information, those details are called parameters. O código a seguir executa o método SaveAs, que exige um novo nome para o arquivo.The following code runs the SaveAs method, which requires a new name for the file.

Application.ActiveDocument.SaveAs ("New Document Name.docx")

Os valores listados entre parênteses após o nome de um método são os parâmetros.Values listed in parentheses after a method name are the parameters. Aqui, o novo nome do arquivo é um parâmetro do método SaveAs.Here, the new name for the file is a parameter for the SaveAs method.

PropriedadesProperties

Você usa a mesma sintaxe para definir uma propriedade usada para ler uma propriedade.You use the same syntax to set a property that you use to read a property. O código a seguir executa um método para selecionar a célula A1 no Excel e, em seguida, definir uma propriedade para colocar algo nessa célula.The following code executes a method to select cell A1 in Excel and then to set a property to put something in that cell.

    Application.ActiveSheet.Range("A1").Select
    Application.Selection.Value = "Hello World"

O primeiro desafio na programação em VBA é ter uma noção do modelo de objeto de cada aplicativo do Office e ler a sintaxe do objeto, do método e da propriedade.The first challenge in VBA programming is to get a feeling for the object model of each Office application and to read the object, method, and property syntax. Os modelos de objeto são semelhantes em todos os aplicativos do Office, mas são específicos para os tipos de documento e objetos manipulados por eles.The object models are similar in all Office applications, but each is specific to the kind of documents and objects that it manipulates.

Na primeira linha do trecho de código, há o objeto Aplicativo, aqui representado pelo Excel, e, em seguida, o ActiveSheet, que fornece acesso à planilha ativa.In the first line of the code snippet, there is the Application object, Excel this time, and then the ActiveSheet, which provides access to the active worksheet. Depois há um termo menos conhecido, Intervalo, que significa "definir um intervalo de células dessa forma".After that is a term not as familiar, Range, which means "define a range of cells in this way." O código instrui Intervalo a criar a si próprio apenas com a célula A1 como o conjunto de células definido.The code instructs Range to create itself with just A1 as its defined set of cells. Em outras palavras, a primeira linha do código define um objeto, Intervalo, e executa um método em relação a ele para selecioná-lo.In other words, the first line of code defines an object, the Range, and runs a method against it to select it. O resultado é armazenado automaticamente em outra propriedade do Aplicativo chamada Seleção.The result is automatically stored in another property of the Application called Selection.

A segunda linha do código define a propriedade Valor de Seleção para o texto "Olá, Mundo", e esse valor é exibido na célula A1.The second line of code sets the Value property of Selection to the text "Hello World", and that value appears in cell A1.

O código VBA mais simples gravado pode meramente obter acesso aos objetos no aplicativo do Office no qual você está trabalhando e definir propriedades.The simplest VBA code that you write might simply gain access to objects in the Office application that you are working with and set properties. Por exemplo, você poderia obter acesso às linhas em uma tabela do Word e alterar sua formatação no script do VBA.For example, you could get access to the rows in a table in Word and change their formatting in your VBA script.

Isso parece simples, mas pode ser incrivelmente útil. Após gravar esse código, aproveite toda a capacidade da programação para fazer essas mesmas alterações em várias tabelas ou documentos ou para criá-las de acordo com alguma lógica ou condição.That sounds simple, but it can be incredibly useful; once you can write that code, you can harness all of the power of programming to make those same changes in several tables or documents, or make them according to some logic or condition. Para um computador, realizar 1.000 ou 10 alterações é a mesma coisa, portanto, aqui não é preciso economizar na escala em documentos e problemas de maiores dimensões. É nesse quesito que o VBA realmente se destaca e economiza seu tempo.For a computer, making 1000 changes is no different from making 10, so there is an economy of scale here with larger documents and problems, and that is where VBA can really shine and save you time.

Macros e o Editor do Visual BasicMacros and the Visual Basic Editor

Agora que já tem algumas informações sobre como os aplicativos do Office expõem seus modelos de objeto, é provável que você esteja ansioso para tentar chamar métodos de objeto, definir propriedades de objetos e responder a eventos de objeto.Now that you know something about how Office applications expose their object models, you are probably eager to try calling object methods, setting object properties, and responding to object events. Para fazer isso, você precisa gravar seu código em um lugar e de uma forma que o Office possa entender. Isso é geralmente feito usando o Editor do Visual Basic.To do so, you must write your code in a place and in a way that Office can understand; typically, by using the Visual Basic Editor. Embora ele venha instalado por padrão, muitos usuários não sabem que ele está disponível até ele ser habilitado na faixa de opções.Although it is installed by default, many users do not know that it is even available until it is enabled on the ribbon.

Todos os aplicativos do Office usam a faixa de opções.All Office applications use the ribbon. Uma das guias da faixa de opções é a guia Desenvolvedor, onde você acessa o Editor do Visual Basic e outras ferramentas de desenvolvedor.One tab on the ribbon is the Developer tab, where you access the Visual Basic Editor and other developer tools. Como o Office não exibe a guia Desenvolvedor por padrão, você deve habilitá-la usando o seguinte procedimento:Because Office does not display the Developer tab by default, you must enable it by using the following procedure:

Para habilitar a guia DesenvolvedorTo enable the Developer tab

  1. Na guia Arquivo, escolha Opções para abrir a caixa de diálogo Opções.On the File tab, choose Options to open the Options dialog box.

  2. Clique em Personalizar a Faixa de Opções no lado esquerdo da caixa de diálogo.Choose Customize Ribbon on the left side of the dialog box.

  3. Em Escolher comandos a partir de no lado esquerdo da caixa de diálogo, selecione Comandos Populares.Under Choose commands from on the left side of the dialog box, select Popular Commands.

  4. Em Personalizar a Faixa de Opções no lado direito da caixa de diálogo, escolha Guias Principais no menu suspenso da caixa de listagem e marque a caixa de seleção Desenvolvedor.Under Customize the Ribbon on the right side of the dialog box, select Main Tabs in the drop down list box, and then select the Developer checkbox.

  5. Escolha OK.Choose OK.

Observação

No Office 2007, a guia Desenvolvedor foi exibida clicando no botão do Office, em Opções, e, em seguida, marcando a caixa de seleção Mostrar guia Desenvolvedor na Faixa de Opções na categoria Popular da caia de diálogo Opções.In Office 2007, you displayed the Developer tab by choosing the Office button, choosing Options, and then selecting the Show Developer tab in Ribbon check box in the Popular category of the Options dialog box.

Após habilitar a guia Desenvolvedor, fica fácil localizar os botões Visual Basic e Macros.After you enable the Developer tab, it is easy to find the Visual Basic and Macros buttons.

Figura 1. Botões na guia DesenvolvedorFigure 1. Buttons on the Developer tab

Botões na guia Desenvolvedor

Problemas de segurançaSecurity issues

Para proteger os usuários do Office contra vírus e códigos de macro perigosos, não é possível salvar o código de macro em um documento padrão do Office que usa uma extensão de arquivo padrão.To protect Office users against viruses and dangerous macro code, you cannot save macro code in a standard Office document that uses a standard file extension. Em vez disso, você deve salvar o código em um arquivo com uma extensão especial.Instead, you must save the code in a file with a special extension. Por exemplo, você não pode salvar as macros em um documento padrão do Word com uma extensão .docx. Em vez disso, você deve usar um Documento Habilitado para Macro do Word especial com uma extensão .docm.For example you cannot save macros in a standard Word document with a .docx extension; instead, you must use a special Word Macro-Enabled Document with a .docm extension.

Ao abrir um arquivo .docm, a segurança do Office ainda pode evitar que as macros no documento sejam executadas, informando você sobre isso ou não.When you open a .docm file, Office security might still prevent the macros in the document from running, with or without telling you. Examine as configurações e opções da Central de Confiabilidade em todos os aplicativos do Office.Examine the settings and options in the Trust Center on all Office applications. A configuração padrão desabilita a execução da macro, mas informa você que a macro foi desabilitada e oferece a opção de ativá-la novamente para o documento.The default setting disables macro from running, but warns you that macros have been disabled and gives you the option to turn them back on for that document.

Ao criar Locais Confiáveis, Documentos Confiáveis ou Fornecedores Confiáveis, é possível designar pastas específicas onde as macros podem ser executadas.You can designate specific folders where macros can run by creating Trusted Locations, Trusted Documents, or Trusted Publishers. A opção de maior portabilidade é usar Fornecedores Confiáveis que funcionam com documentos assinados digitalmente distribuídos por você.The most portable option is to use Trusted Publishers, which works with digitally signed documents that you distribute. Para ver mais informações sobre as configurações de segurança em um aplicativo específico do Office, abra a caixa de diálogo Opções, clique em Central de Confiabilidade e, em seguida, clique em Configurações da Central de Confiabilidade.For more information about the security settings in a particular Office application, open the Options dialog box, choose Trust Center, and then choose Trust Center Settings.

Observação

Alguns aplicativos do Office, como o Outlook, salvam macros por padrão em um modelo mestre no computador local.Some Office applications, like Outlook, save macros by default in a master template on your local computer. Embora essa estratégia reduza os problemas locais de segurança em seu próprio computador ao executar suas próprias macros, ela exige uma estratégia de implantação se você quiser distribuir sua macro.Although that strategy reduces the local security issues on your own computer when you run your own macros, it requires a deployment strategy if you want to distribute your macro.

Gravando uma macroRecording a macro

Quando você clica no botão Macro na guia Desenvolvedor, a caixa de diálogo Macros é exibida e dá acesso às sub-rotinas ou macros do VBA que podem ser acessadas de um determinado documento ou aplicativo.When you choose the Macro button on the Developer tab, it opens the Macros dialog box, which gives you access to VBA subroutines or macros that you can access from a particular document or application. O botão Visual Basic abre o Editor do Visual Basic, onde você pode criar e editar o código do VBA.The Visual Basic button opens the Visual Basic Editor, where you create and edit VBA code.

Outro botão presente na guia Desenvolvedor no Word e Excel é o botão Gravar Macro que gera automaticamente um código VBA que pode reproduzir as ações executadas no aplicativo.Another button on the Developer tab in Word and Excel is the Record Macro button, which automatically generates VBA code that can reproduce the actions that you perform in the application. Gravar Macro é uma ótima ferramenta que pode ser usada para oferecer mais informações sobre o VBA.Record Macro is a terrific tool that you can use to learn more about VBA. Ler o código gerado pode proporcionar uma visão do VBA e criar um elo constante entre seu conhecimento do Office como usuário e seu conhecimento como programador.Reading the generated code can give you insight into VBA and provide a stable bridge between your knowledge of Office as a user and your knowledge as a programmer. A única limitação é que o código gerado pode ser confuso, já que o editor de Macro deverá fazer alguma suposições sobre suas intenções, e essas suposições não são necessariamente precisas.The only caveat is that the generated code can be confusing because the Macro editor must make some assumptions about your intentions, and those assumptions are not necessarily accurate.

Para gravar uma macroTo record a macro

  1. Abra o Excel em uma nova pasta de trabalho e clique na guia Desenvolvedor na faixa de opções.Open Excel to a new Workbook and choose the Developer tab in the ribbon. Clique em Gravar Macro e aceite todas as configurações padrão na caixa de diálogo Gravar Macro incluindo Macro1 como o nome da macro e Esta Pasta de Trabalho como o local.Choose Record Macro and accept all of the default settings in the Record Macro dialog box, including Macro1 as the name of the macro and This Workbook as the location.

  2. Clique em OK para começar a gravar a macro.Choose OK to begin recording the macro. Observe como o texto do botão muda para Parar Gravação.Note how the button text changes to Stop Recording. Clique nesse botão assim que concluir as ações que você deseja gravar.Choose that button the instant you complete the actions that you want to record.

  3. Clique na célula B1 e digite a primeira cadeia de caracteres clássica do programador: Olá, mundo.Choose cell B1 and type the programmer's classic first string: Hello World. Pare de digitar e observe o botão Parar Gravação. Ele está esmaecido porque o Excel está esperando você terminar de digitar o valor na célula.Stop typing and look at the Stop Recording button; it is grayed out because Excel is waiting for you to finish typing the value in the cell.

  4. Clique na célula B2 para concluir a ação na célula B1 e clique em Parar Gravação.Choose cell B2 to complete the action in cell B1, and then choose Stop Recording.

  5. Clique em Macros na guia Desenvolvedor marque Macro1 se essa opção não estiver selecionada, e clique em Editar para exibir o código da Macro1 no Editor do Visual Basic.Choose Macros on the Developer tab, select Macro1 if it is not selected, and then choose Edit to view the code from Macro1 in the Visual Basic Editor.

Figura 2. Código de macro no Editor do Visual BasicFigure 2. Macro code in Visual Basic Editor

Código de macro no Editor do Visual Basic

Examinando o códigoLooking at the code

A macro que você criou deve ser semelhante ao código a seguir.The macro that you created should look similar to the following code.

Sub Macro1()
'
' Macro1 Macro
'
'
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Hello World"
    Range("B2").Select
End Sub

Esteja ciente das semelhanças e diferenças com o trecho de código anterior do texto selecionado na célula A1.Be aware of the similarities to the earlier code snippet that selected text in cell A1, and the differences. Nesse código, a célula B1 é selecionada, e a cadeia de caracteres "Olá Mundo" é aplicada à célula que foi ativada.In this code, cell B1 is selected, and then the string "Hello World" is applied to the cell that has been made active. As aspas ao redor do texto especificam o valor da cadeia de caracteres em vez de um valor numérico.The quotes around the text specify a string value as opposed to a numeric value.

Lembre-se de como você clicou na célula B2 para exibir novamente o botão Parar Gravação?Remember how you chose cell B2 to display the Stop Recording button again? Essa ação também aparece como uma linha de código.That action shows up as a line of code as well. O gravador de macros registra cada pressionamento de tecla.The macro recorder records every keystroke.

As linhas de código que começam com um apóstrofo e são coloridas de verde pelo editor são comentários que explicam o código ou lembram você e outros programadores sobre a finalidade do código.The lines of code that start with an apostrophe and colored green by the editor are comments that explain the code or remind you and other programmers the purpose of the code. O VBA ignora todas as linhas ou parte de uma linha que comece com aspas simples.VBA ignores any line, or portion of a line, that begins with a single quote. Um tópico importante é aquele que aborda a escrita de comentários claros e apropriados em seu código, mas essa discussão sai do âmbito deste artigo.Writing clear and appropriate comments in your code is an important topic, but that discussion is out of the scope of this article. Referências subsequentes para esse código no artigo não incluem as quatro linhas do comentário.Subsequent references to this code in the article do not include those four comment lines.

Quando o gravador de macro gera o código, ele usa um algoritmo complexo para determinar as propriedades e os métodos pretendidos.When the macro recorder generates the code, it uses a complex algorithm to determine the methods and the properties that you intended. Se você não reconhecer uma determinada propriedade, há muitos recursos disponíveis para ajudá-lo.If you do not recognize a given property, there are many resources available to help you. Por exemplo, na macro que você gravou, o gravador de macro gerou um código referente à propriedade FormulaR1C1.For example, in the macro that you recorded, the macro recorder generated code that refers to the FormulaR1C1 property. Não sabe o que isso significa?Not sure what that means?

Observação

Lembre-se de que o objeto Aplicativo está implícito em todas as macros do VBA.Be aware that Application object is implied in all VBA macros. O código que você gravou funciona com aplicativo.The code that you recorded works with Application. no início de cada linha.at the beginning of each line.

Usando a Ajuda de DesenvolvedorUsing Developer Help

Selecione FormulaR1C1 na macro gravada e pressione F1.Select FormulaR1C1 in the recorded macro and press F1. O sistema de Ajuda executa uma pesquisa rápida, determina se os assuntos apropriados estão na seção Desenvolvedor da Ajuda do Excel e lista a propriedade FormulaR1C1.The Help system runs a quick search, determines that the appropriate subjects are in the Excel Developer section of the Excel Help, and lists the FormulaR1C1 property. É possível clicar no link para ler mais sobre a propriedade, mas antes de fazer isso, observe que há um link para a Referência do Modelo de Objeto do Excel na parte inferior da janela.You can choose the link to read more about the property, but before you do, be aware of the Excel Object Model Reference link near the bottom of the window. Clique no link para exibir uma longa lista de objetos que o Excel usa no modelo de objeto para descrever objetos Worksheet e seus componentes.Choose the link to view a long list of objects that Excel uses in its object model to describe the Worksheets and their components.

Clique em qualquer uma delas para ver as propriedades e os métodos que se aplicam a esse objeto em particular, juntamente com referências cruzadas para as diversas opções relacionadas.Choose any one of those to see the properties and methods that apply to that particular object, along with cross references to different related options. Muitas entradas da Ajuda também oferecem pequenos exemplos de código que podem ajudar você.Many Help entries also have brief code examples that can help you. Por exemplo, você pode seguir os links no objeto bordas para ver como definir uma borda no VBA.For example, you can follow the links in the Borders object to see how to set a border in VBA.

Worksheets(1).Range("A1").Borders.LineStyle = xlDouble

Editando o códigoEditing the code

O código Borders não se parece com a macro gravada.The Borders code looks different from the recorded macro. Um ponto que pode ser um tanto confuso no modelo de objeto é que existe mais de uma maneira de tratar um determinado objeto, célula A1 neste exemplo.One thing that can be confusing with an object model is that there is more than one way to address any given object, cell A1 in this example.

Às vezes, a melhor maneira de aprender programação é fazendo pequenas alterações em códigos de trabalho e observar o resultado.Sometimes the best way to learn programming is to make minor changes to some working code and see what happens as a result. Experimente agora.Try it now. Abra Macro1 no Editor do Visual Basic e altere o código para o seguinte.Open Macro1 in the Visual Basic Editor and change the code to the following.

Sub Macro1()
    Worksheets(1).Range("A1").Value = "Wow!"
    Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub

Dica

Ao trabalhar com códigos, use o recurso copiar e colar tanto quanto possível para evitar erros de digitação.Use Copy and Paste as much as possible when working with code to avoid typing errors.

Não é preciso salvar o código para testá-lo, portanto, volte para o documento do Excel, clique em Macros na guia Desenvolvedor, clique em Macro1 e, em seguida, clique em Executar.You do not need to save the code to try it out, so return to the Excel document, choose Macros on the Developer tab, choose Macro1, and then choose Run. Agora, a célula A1 contém o texto Uau!Cell A1 now contains the text Wow! e tem uma borda de linha dupla em torno dela.and has a double-line border around it.

Figura 3. Resultados da sua primeira macroFigure 3. Results of your first macro

Resultados da sua primeira macro

Você acaba de combinar gravação de macros, leitura da documentação sobre o modelo de objeto e programação simples para criar um programa VBA que realize alguma tarefa.You just combined macro recording, reading the object model documentation, and simple programming to make a VBA program that does something. Parabéns!Congratulations!

Não funcionou?Did not work? Leia mais sobre sugestões de depuração no VBA.Read on for debugging suggestions in VBA.

Dicas e truques de programaçãoProgramming tips and tricks

Comece com exemplosStart with examples

A comunidade do VBA é muito grande. Uma pesquisa na Web quase sempre gera um exemplo de código VBA que faz algo semelhante àquilo que você deseja fazer.The VBA community is very large; a search on the Web can almost always yield an example of VBA code that does something similar to what you want to do. Se não encontrar um bom exemplo, tente dividir a tarefa em unidades menores e pesquisar em cada uma delas ou tente pensar em um problema mais comum, mas que seja semelhante.If you cannot find a good example, try to break the task down into smaller units and search on each of those, or try to think of a more common, but similar problem. É possível economizar muito tempo começando pelos exemplos.Starting with an example can save you hours of time.

Isso não significa que um código gratuito e muito bem elaborado esteja na Web esperando por você.That does not mean that free and well-thought-out code is on the Web waiting for you to come along. Na verdade, parte do código encontrado pode ter bugs ou erros.In fact, some of the code that you find might have bugs or mistakes. A ideia é que os exemplos encontrados online ou na documentação do VBA sejam um ponto de partida.The idea is that the examples you find online or in VBA documentation give you a head start. Lembre-se de que, para aprender a programar, são necessários tempo e raciocínio.Remember that learning programming requires time and thought. Antes de se apressar em usar outra solução para resolver seu problema, pergunte a si mesmo se o VBA é a escolha certa para esse problema.Before you get in a big rush to use another solution to solve your problem, ask yourself whether VBA is the right choice for this problem.

Simplificar um problemaMake a simpler problem

A programação pode ficar complexa em um piscar de olhos.Programming can get complex quickly. É fundamental, especialmente como iniciante, dividir o problema nas menores unidades lógicas possíveis e, em seguida, gravar e testar cada parte isoladamente.It is critical, especially as a beginner, that you break the problem down to the smallest possible logical units, then write and test each piece in isolation. Se você tem muitos códigos na sua frente e se sente confuso ou atrapalhado, pare e deixe o problema de lado.If you have too much code in front of you and you get confused or muddled, stop and set the problem aside. Quando voltar para o problema, copie uma pequena parte do problema em um novo módulo, resolva essa parte, execute o código e teste-o para verificar se ele funciona.When you come back to the problem, copy out a small piece of the problem into a new module, solve that piece, get the code working, and test it to ensure that it works. Em seguida, vá para a próxima parte.Then move on to the next part.

Bugs e depuraçãoBugs and debugging

Existem dois tipos principais de erros de programação: erros de sintaxe, que violam as regras gramaticais da linguagem de programação, e erros de tempo de execução, que parecem sintaticamente corretos, mas falham quando o VBA tenta executar o código.There are two main types of programming errors: syntax errors, which violate the grammatical rules of the programming language, and run-time errors, which look syntactically correct, but fail when VBA attempts to execute the code.

Embora a correção desses erros possa ser frustrante, os erros de sintaxe são fáceis de detectar. O Editor do Visual Basic emite um aviso e pisca se você digitar um erro de sintaxe no código.Although they can be frustrating to fix, syntax errors are easy to catch; the Visual Basic Editor beeps and flashes at you if you type a syntax error in your code.

Por exemplo, os valores das cadeias de caracteres devem estar entre aspas duplas no VBA.For example, string values must be surrounded by double quotes in VBA. Para descobrir o que acontece quando você usa aspas simples no lugar, retorne para o Editor do Visual Basic e substitua "Uau!"To find out what happens when you use single quotes instead, return to the Visual Basic Editor and replace the "Wow!" cadeia de caracteres no exemplo de código com 'Uau'!string in the code example with 'Wow!' (ou seja, a palavra Uau entre aspas simples).(that is, the word Wow enclosed in single quotes). Se você clicar na linha seguinte, o Editor do Visual Basic reagirá.If you choose the next line, the Visual Basic Editor reacts. O erro "Erro de compilação: Esperado: expressão" não é tão útil, mas a linha que gera o erro fica vermelha para informar que existe um erro de sintaxe nessa linha e, por isso, o programa não será executado.The error "Compile error: Expected: expression" is not that helpful, but the line that generates the error turns red to tell you that you have a syntax error in that line and as a result, this program will not run.

Clique em OK e altere novamente o texto para "Uau!".Choose OK and change the text back to"Wow!".

Os erros de tempo de execução são mais difíceis de detectar porque a sintaxe da programação parece estar correta, mas o código falha quando o VBA tenta executá-la.Runtime errors are harder to catch because the programming syntax looks correct, but the code fails when VBA tries to execute it.

Por exemplo, abra o Editor do Visual Basic e altere o nome da propriedade Valor para ValueX na sua Macro, introduzindo um erro de tempo de execução de forma deliberada, já que o objeto Intervalo não possui uma propriedade chamada ValueX.For example, open the Visual Basic Editor and change the Value property name toValueX in your Macro, deliberately introducing a runtime error since the Range object does not have a property called ValueX. Volte para o documento do Excel, abra a caixa de diálogo Macros e execute Macro1 novamente.Go back to the Excel document, open the Macros dialog box and run Macro1 again. Você deve ver uma caixa de mensagem do Visual Basic explicando o erro de tempo de execução com o texto "O objeto não dá suporte à propriedade do método."You should see a Visual Basic message box that explains the run-time error with the text, "Object doesn't support this property of method." Embora o texto seja claro, clique em Depurar para saber mais.Although that text is clear, choose Debug to find out more.

Ao voltar para o Editor do Visual Basic, ele estará em um modo de depuração especial que usa um realce amarelo para mostrar a linha de código que falhou.When you return to the Visual Basic Editor, it is in a special debug mode that uses a yellow highlight to show you the line of code that failed. Conforme esperado, a linha que inclui a propriedade ValueX está realçada.As expected, the line that includes the ValueX property is highlighted.

É possível fazer alterações no código VBA que está sendo executado. Para isso, altere ValueX de volta para Valor e clique no botão verde de reprodução logo abaixo do menu Depurar.You can make changes to VBA code that is running, so change ValueX back to Value and choose the little green play button underneath the Debug menu. O programa deverá voltar a funcionar normalmente.The program should run normally again.

É aconselhável aprender a usar o depurador mais deliberadamente para programas mais extensos e mais complexos.It is a good idea to learn how to use the debugger more deliberately for longer, more complex programs. Aprenda, no mínimo, a definir pontos de interrupção para interromper a execução no ponto em que você deseja examinar o código, a adicionar inspeções para ver os valores de diversas variáveis e propriedades enquanto o código é executado e a percorrer o código linha por linha.At a minimum, learn a how to set break-points to stop execution at a point where you want to take a look at the code, how to add watches to see the values of different variables and properties as the code runs, and how to step through the code line by line. Essas opções estão disponíveis no menu Depurar, e os usuários que realmente usam a depuração normalmente memorizam os atalhos de teclado associados.These options are all available in the Debug menu and serious debugger users typically memorize the accompanying keyboard shortcuts.

Aproveitando os materiais de referênciaUsing reference materials well

Para abrir a Referência do Desenvolvedor incorporada à Ajuda do Office, abra a referência da Ajuda de qualquer aplicativo do Office clicando no ponto de interrogação na faixa de opções ou pressionando F1.To open the Developer Reference that is built into Office Help, open the Help reference from any Office application by choosing the question mark in the ribbon or by pressing F1. Em seguida, à direita do botão Pesquisar, clique na seta suspensa para filtrar o conteúdo.Then, to the right of the Search button, choose the dropdown arrow to filter the contents. Escolha Referência do desenvolvedor.Choose Developer Reference. Se o sumário não aparecer no painel esquerdo, clique no pequeno ícone de livro para abri-lo e, em seguida, expanda a Referência do Modelo de Objeto de lá.If you do not see the table of contents in the left panel, choose the little book icon to open it, and then expand the Object Model Reference from there.

Figura 5. A filtragem na Ajuda do desenvolvedor se aplica a todos os aplicativos do OfficeFigure 5. Filtering on developer Help applies to all Office applications

A filtragem na Ajuda do desenvolvedor se aplica a todos os aplicativos do Office

O tempo gasto procurando a referência do Modelo de Objeto trouxe vantagens.Time spent browsing the Object Model reference pays off. Após compreender as noções básicas da sintaxe do VBA e do modelo de objeto do aplicativo do Office com o qual está trabalhando, você passa da fase de suposições para a fase de programação metódica.After you understand the basics of VBA syntax and the object model for the Office application that you are working with, you advance from guesswork to methodical programming.

E, claro, a Central de Desenvolvedores do Microsoft Office é um excelente portal para encontrar artigos, dicas e informações sobre a comunidade.Of course the Microsoft Office Developer Center is an excellent portal for articles, tips, and community information.

Pesquisando fóruns e gruposSearching forums and groups

Todo programador às vezes encontra obstáculos, mesmo depois de ler todos artigos de referência encontrados e perder o sono à noite pensando nas diversas maneiras de solucionar um problema.All programmers get stuck sometimes, even after reading every reference article they can find and losing sleep at night thinking about different ways to solve a problem. Felizmente, a Internet disponibiliza uma comunidade de desenvolvedores que ajudam uns aos outros a resolver problemas de programação.Fortunately, the Internet has fostered a community of developers who help each other solve programming problems.

Qualquer pesquisa na Web para "fórum do desenvolvedor do office" revela vários grupos de discussão.Any search on the Web for "office developer forum" reveals several discussion groups. Pesquise "desenvolvimento do office" ou uma descrição do problema para encontrar fóruns, postagens de blog e também artigos.You can search on "office development" or a description of your problem to discover forums, blog posts, and articles as well.

Se você tiver feito tudo ao seu alcance para resolver um problema, não tenha medo de postar sua pergunta em um fórum de desenvolvedores.If you have done everything that you can to solve a problem, do not be afraid to post your question to a developers forum. Esses fóruns recebem postagens de programadores iniciantes, e muitos dos desenvolvedores experientes gostam de ajudar.These forums welcome posts from newer programmers and many of the experienced developers are glad to help.

Veja a seguir alguns pontos da etiqueta a ser seguida ao postar em um fórum de desenvolvedores:The following are a few points of etiquette to follow when you post to a developer forum:

  • Antes de postar, procure pelas Perguntas Frequentes no site ou por diretrizes que os membros desejam que sejam seguidas.Before you post, look on the site for an FAQ or for guidelines that members want you to follow. Certifique-se de postar conteúdo que satisfaça essas diretrizes e de postar na seção correta do fórum.Ensure that you post content that is consistent with those guidelines and in the correct section of the forum.

  • Inclua um exemplo claro e completo do código e, se ele for parte de uma seção de código mais longa, considere editar o código para deixá-lo mais claro para outras pessoas.Include a clear and complete code sample, and consider editing your code to clarify it for others if it is part of a longer section of code.

  • Descreva seu problema de forma clara e concisa e resuma as etapas adotadas para resolver o problema.Describe your problem clearly and concisely, and summarize any steps that you have taken to solve the problem. Reserve um tempo para escrever sua postagem da melhor forma possível, especialmente se você estiver confuso ou com pressa.Take the time to write your post as well as you can, especially if you are flustered or in a hurry. Apresente a situação de uma maneira que faça sentido para os leitores na primeira vez que eles lerem a instrução sobre o problema.Present the situation in a way that will make sense to readers the first time that they read the problem statement.

  • Seja educado e expresse seu agradecimento.Be polite and express your appreciation.

Aprendendo mais sobre programaçãoGoing further with programming

Embora este artigo seja curto e aborde apenas o essencial sobre VBA e programação, esperamos que tenha sido o suficiente para você começar.Although this article is short and only scratches the surface of VBA and programming, it is hopefully enough to get you started.

Esta seção descreve resumidamente mais alguns tópicos importantes.This section briefly discusses a few more key topics.

VariáveisVariables

Nos exemplos simples deste artigo, você manipulou objetos que o aplicativo já havia criado.In the simple examples in this article you manipulated objects that the application had already created. Talvez você queira criar seus próprios objetos para armazenar valores ou referências para outros objetos para usar temporariamente em seu aplicativo.You might want to create your own objects to store values or references to other objects for temporary use in your application. Esses objetos são chamados variáveis.These are called variables.

Para usar uma variável no VBA, informe ao VBA o tipo de objeto que a variável representa usando a instrução Dim.To use a variable in VBA, must tell VBA which type of object the variable represents by using the Dim statement. Em seguida, defina o valor e use-o para definir outras propriedades ou variáveis.You then set its value and use it to set other variables or properties.

    Dim MyStringVariable As String
    MyStringVariable = "Wow!"
    Worksheets(1).Range("A1").Value = MyStringVariable

Ramificação e loopingBranching and looping

Os programas simples neste artigo executam uma linha por vez, de cima para baixo.The simple programs in this article execute one line at a time, from the top down. O verdadeiro poder da programação vem das opções que você tem para determinar quais linhas de código executar, tendo como base uma ou mais condições especificadas.The real power in programming comes from the options that you have to determine which lines of code to execute, based on one or more conditions that you specify. É possível estender essas capacidades ainda mais ao repetir uma operação por diversas vezes.You can extend those capabilities even further when you can repeat an operation many times. Por exemplo, o código a seguir estende a Macro1.For example, the following code extends Macro1.

Sub Macro1()
    If Worksheets(1).Range("A1").Value = "Yes!" Then
        Dim i As Integer
        For i = 2 To 10
            Worksheets(1).Range("A" & i).Value = "OK! " & i
        Next i
    Else
        MsgBox "Put Yes! in cell A1"
    End If
End Sub

Digite ou cole o código no Editor do Visual Basic e execute-o.Type or paste the code into the Visual Basic Editor and then run it. Siga as instruções na caixa de mensagem exibida e altere o texto na célula A1, de Uau!Follow the directions in the message box that appears and change the text in cell A1 from Wow! para Sim!to Yes! e execute-o novamente para ver o poder do looping.and run it again to see the power of looping. Esse trecho de código demonstra variáveis, ramificações e looping.This code snippet demonstrates variables, branching and looping. Leia cuidadosamente após observá-lo em ação e tente determinar o que acontece quando cada linha é executada.Read it carefully after you see it in action and try to determine what happens as each line executes.

Todos os meus aplicativos do Office: Exemplo de códigoAll of my Office applications: example code

Veja alguns scripts para experimentar. Cada um deles soluciona um problema real do Office.Here are a few scripts to try; each solves a real-world Office problem.

Criar um email no OutlookCreate an email in Outlook

Sub MakeMessage()
    Dim OutlookMessage As Outlook.MailItem
    Set OutlookMessage = Application.CreateItem(olMailItem)
    OutlookMessage.Subject = "Hello World!"
    OutlookMessage.Display
    Set OutlookMessage = Nothing
End Sub

Lembre-se de que há situações em que você pode querer automatizar o email no Outlook. Modelos também podem ser usados.Be aware that there are situations in which you might want to automate email in Outlook; you can use templates as well.

Excluir linhas vazias em uma planilha do ExcelDelete empty rows in an Excel worksheet

Sub DeleteEmptyRows()
    SelectedRange = Selection.Rows.Count
    ActiveCell.Offset(0, 0).Select
    For i = 1 To SelectedRange
        If ActiveCell.Value = "" Then
            Selection.EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Next i
End Sub

Lembre-se de que você pode selecionar uma coluna de células e executar essa macro para excluir todas as linhas na coluna selecionada que têm uma célula em branco.Be aware that you can select a column of cells and run this macro to delete all rows in the selected column that have a blank cell.

Excluir caixas de texto vazias no PowerPointDelete empty text boxes in PowerPoint

Sub RemoveEmptyTextBoxes()
    Dim SlideObj As Slide
    Dim ShapeObj As Shape
    Dim ShapeIndex As Integer
    For Each SlideObj In ActivePresentation.Slides
        For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
            Set ShapeObj = SlideObj.Shapes(ShapeIndex)
            If ShapeObj.Type = msoTextBox Then
                If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then
                    ShapeObj.Delete
                End If
            End If
        Next ShapeIndex
    Next SlideObj
End Sub

Lembre-se de que este código executa um loop em todos os slides e exclui todas as caixas de texto que não contêm texto.Be aware that this code loops through all of the slides and deletes all text boxes that do not have any text. Essa variável de contagem diminui objetos em vez de aumentá-los, pois todas as vezes que o código exclui um objeto, ela remove esse objeto da coleção, e isso reduz a contagem.The count variable decrements instead of increments because each time the code deletes an object, it removes that object from the collection, which reduces the count.

Copiando um contato do Outlook para o WordCopy a contact from Outlook to Word

Sub CopyCurrentContact()
   Dim OutlookObj As Object
   Dim InspectorObj As Object
   Dim ItemObj As Object
   Set OutlookObj = CreateObject("Outlook.Application")
   Set InspectorObj = OutlookObj.ActiveInspector
   Set ItemObj = InspectorObj.CurrentItem
   Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & " from " & ItemObj.CompanyName)
End Sub

Lembre-se de que esse código copia o contato que está aberto no Outlook para o documento aberto do Word.Be aware that this code copies the currently open contact in Outlook into the open Word document. Esse código só funciona quando há realmente um contato aberto para inspeção no Outlook.This code only works if there is a contact currently open for inspection in Outlook.

Suporte e comentáriosSupport and feedback

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação?Have questions or feedback about Office VBA or this documentation? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.