Um guia para trabalhar com pastas de trabalho em vba
No Excel, uma pasta de trabalho é um dos mais importantes de todos os objetos do Excel e também é essencial entender como usar e consultar as pastas de trabalho ao escrever códigos VBA.
Neste tutorial, exploraremos todas as coisas que você precisa saber. Porém, a primeira coisa que você precisa entender são os objetos envolvidos no trabalho com pastas de trabalho no VBA.
Coisas para saber:
- Objeto de fichários
- Objeto fichário
Esses dois objetos parecem iguais, mas há uma diferença fundamental entre os dois.
Objeto de fichários
No VBA, o objeto Workbooks representa a coleção de pastas de trabalho abertas no Microsoft Excel. Imagine que você tem dez arquivos abertos ao mesmo tempo. E você deseja consultar a única pasta de trabalho entre eles. Nesse caso, você deve usar o objeto pasta de trabalho para fazer referência a essa pasta de trabalho usando seu nome.
Objeto fichário
No VBA, o objeto pasta de trabalho representa uma única pasta de trabalho entre todas as pastas de trabalho atualmente abertas no Microsoft Excel. A melhor maneira de entender isso é pensar em declarar uma variável como um fichário que você deseja usar para se referir a um fichário específico no código.
Links úteis : Adicionar uma guia Desenvolvedor | Editor Visual Basic | Execute uma macro | Pasta de trabalho de macros pessoais
Consulte uma pasta de trabalho em VBA
Para trabalhar com pastas de trabalho em VBA, a primeira coisa que você precisa saber é como fazer referência a uma pasta de trabalho em uma macro. Aqui está o bom: existem várias maneiras de se referir a uma pasta de trabalho. E no futuro exploraremos cada um deles.
1. Por nome
A maneira mais fácil de se referir a uma pasta de trabalho é pelo nome. Suponha que você queira ativar a pasta de trabalho Book1.xlsx, neste caso o código que você precisa usar deve ser o seguinte:
Referir-se a uma pasta de trabalho com seu nome é bastante simples, você precisa especificar o nome e pronto. Mas aqui está uma coisa que você precisa cuidar : se uma pasta de trabalho não for salva, você precisará usar apenas o nome. E se estiver cadastrado, deve-se usar o nome com a extensão.
2. Por número
Quando você abre uma pasta de trabalho, o Excel atribui um número de índice a essa pasta de trabalho e você pode usar esse número para fazer referência a uma pasta de trabalho. A pasta de trabalho que você abriu primeiro terá o número de índice “1” e a segunda terá “2” e assim por diante.
Este método pode parecer menos real para você porque é difícil saber qual pasta de trabalho está em qual número de índice. Mas há uma situação em que esse método é muito útil: um loop por todas as pastas de trabalho abertas.
3. Por esta apostila
Esta pasta de trabalho é uma propriedade que ajuda você a fazer referência à pasta de trabalho na qual você escreve o código. Digamos que você escreva o código em “Livro1” e use ThisWorkbook para salvar a pasta de trabalho. Agora, mesmo quando você altera o nome da pasta de trabalho, não será necessário alterar o código.
O código acima conta a quantidade de planilhas da pasta de trabalho onde este código está escrito e exibe uma caixa de mensagem com o resultado.
4. Por ActiveWorkbook
Se quiser fazer referência a uma pasta de trabalho ativa, você deve usar a propriedade “ActiveWorkbook”. O melhor uso desta propriedade é quando você tem certeza de qual pasta de trabalho está ativada agora. Ou você já ativou a pasta de trabalho na qual deseja trabalhar.
O código acima primeiro ativa a pasta de trabalho “Livro1” e, em seguida, usa a propriedade da pasta de trabalho ativa para salvar e fechar a pasta de trabalho ativa.
Acesse todos os métodos e propriedades
No VBA, sempre que você se refere a um objeto, o VBA permite acessar as propriedades e métodos fornecidos com esse objeto. Da mesma forma, o objeto pasta de trabalho vem com propriedades e métodos. Para acessá-lo, você deve primeiro definir a pasta de trabalho e depois inserir um período .
No momento em que você digita um ponto final (.), ele exibe a lista de propriedades e métodos. Agora você deve ter uma dúvida sobre como identificar qual é uma propriedade e qual é um método.
Aqui está o truque. Se você olhar com atenção, poderá identificar um tijolo verde em movimento e uma mão cinza na frente de cada nome da lista. Portanto, todas as propriedades têm essa letra cinza antes do nome e os métodos têm um tijolo verde em movimento.
Por exemplo, para usar um método com uma pasta de trabalho
Imagine que você deseja fechar uma pasta de trabalho (que é um método), você precisa digitar ou selecionar “Fechar” na lista.
Depois disso, você precisa inserir parênteses iniciais para que o IntelliSense saiba quais argumentos você precisa definir.
Com o método close você precisa definir três argumentos e como você pode ver todos esses argumentos são opcionais e você pode ignorá-los se quiser. Mas alguns métodos não possuem argumentos (por exemplo: activate)
Por exemplo, para usar uma propriedade com uma pasta de trabalho
Imagine que você deseja contar as planilhas da pasta de trabalho “livro1”. Nesse caso, você precisa usar a propriedade “Planilhas” e depois a propriedade de contagem adicional dela.
No código acima, como eu disse, você define book1, então a propriedade sheet se refere a todas as planilhas, depois a propriedade count para contá-las. E quando você executa esse código ele mostra uma caixa de mensagem com o resultado.
Usando a instrução “WITH” com a pasta de trabalho
No VBA, existe uma instrução “With” que pode ajudá-lo a trabalhar com uma pasta de trabalho enquanto escreve uma macro com eficiência. Vamos ver o exemplo abaixo, onde você tem três linhas de código diferentes com a mesma pasta de trabalho, ou seja, ActiveWorkbook.
Com a instrução “WITH”, você pode consultar a pasta de trabalho ativa apenas uma vez e usar todas as propriedades e métodos existentes no código.
- Primeiro, você precisa começar com a instrução inicial “With ActiveWorkbook” e terminar a instrução com “End With”.
- Depois disso, você precisa escrever o código entre esta instrução que você tem no exemplo acima.
Como você pode ver no código acima, nos referimos ao ActiveWorkbook usando a instrução WITH e então todas as propriedades e métodos devem ser usados.
Sub vba_activeworkbook_with_statement() With ActiveWorkbook .Sheets.Add Count:=5 .Charts.Visible = False .SaveAs ("C:UsersDellDesktopmyFolderbook2.xlsx") End With End Sub
Deixe-me dar um exemplo simples e concreto para que você entenda tudo. Imagine que você me pede para ir ao quarto 215 para pegar a garrafa de água e, quando eu voltar, você me manda novamente para o quarto 215 para pegar uma caneta e depois me manda novamente para pegar um laptop. Agora é o seguinte: todas as coisas que você me disse para pegar estão no quarto 215. Então seria melhor se você me mandasse para o quarto 215 e me dissesse para pegar as três coisas de uma vez.
Leia: Com – Termine com
Declarar uma variável como uma pasta de trabalho
Às vezes você precisa declarar uma variável como um fichário para usá-la posteriormente no código. Bem, isso não exige nada de especial de você.
- Use a instrução DIM (declarar).
- Escreva o nome da variável.
- Defina o tipo de variável como Pasta de trabalho.
Lidando com erros
Ao trabalhar com um ou mais objetos de pasta de trabalho no VBA, você também pode precisar lidar com erros. Vejamos um exemplo do erro “Erro de tempo de execução 9: Índice fora do intervalo” . Este erro pode ocorrer por vários motivos.
- A pasta de trabalho que você está tentando consultar não está aberta.
- Talvez você tenha escrito o nome errado.
- A pasta de trabalho a que você está se referindo ainda não foi salva e você está usando a extensão com o nome.
- Se você estiver usando o número de índice para se referir a uma pasta de trabalho e o número usado for maior que o número total de pastas de trabalho abertas.