Capítulo 17: Manipulação de Arquivos e Pastas do Windows via FileSystemObject
🎯 Objetivo da Aula
Nesta aula, você aprenderá a ultrapassar as fronteiras da planilha e interagir diretamente com o sistema operacional Windows utilizando a poderosa biblioteca Scripting.FileSystemObject (FSO). Você aprenderá a verificar a existência de pastas e arquivos (FolderExists, FileExists), criar diretórios organizados por Ano e Mês (CreateFolder) e gerar arquivos externos de dados delimitados (.csv e .txt) através dos métodos CreateTextFile e WriteLine.
Ao final desta aula, você terá desenvolvido o robô de exportação contábil e geração de arquivos do Manifesto Eletrônico (MDF-e) da FastLog S.A.
🏢 Cenário Prático (FastLog S.A.)
Empresa: FastLog Transportes & Logística Integrada S.A.
Problema: Toda noite, o assistente contábil precisava pegar os fretes faturados do dia, copiar para um bloco de notas, salvar manualmente como arquivo CSV delimitado por ponto e vírgula e mover o arquivo para a pasta da rede correspondente ao ano e mês (D:\FastLog_Arquivos\2026\10_Outubro\). Quando o colaborador esquecia de criar a pasta do mês ou salvava com separador de vírgula em vez de ponto e vírgula, o sistema fiscal da SEFAZ rejeitava o lote de MDF-e, bloqueando as notas fiscais dos caminhões na madrugada.
Sua Missão: Desenvolver o robô de automação ExportarLoteFiscalCSV, que cria automaticamente a estrutura de diretórios do mês no disco, formata as colunas em padrão CSV fiscal com ponto e vírgula, gera o arquivo físico com carimbo de data e registra uma cópia de segurança sem qualquer intervenção humana.
🧠 Fundamentos: A Teoria Traduzida
1. O que é o FileSystemObject (FSO)?
O FSO é um componente COM da biblioteca Microsoft Scripting Runtime que concede ao VBA controle total sobre as unidades de disco, diretórios e arquivos do Windows:
flowchart TD
VBA["💻 Script VBA (Excel)"] --> FSO["📂 Objeto Scripting.FileSystemObject"]
subgraph DISCO["Sistema Operacional Windows"]
FSO --> D1["📁 Cria Diretórios: 'C:\FastLog_Exportacoes\2026-10\'"]
FSO --> D2["📄 Cria Arquivo Físico: 'MDFE_20261001.csv'"]
FSO --> D3["💾 Escreve Linhas: .WriteLine 'ID;Placa;Valor;Data'"]
FSO --> D4["🔒 Fecha Arquivo: .Close"]
end
style VBA fill:#1a365d,stroke:#fff,stroke-width:2px,color:#fff
style FSO fill:#2c3e50,stroke:#fff,stroke-width:2px,color:#fff
style DISCO fill:#27ae60,stroke:#fff,stroke-width:2px,color:#fff
style D1 fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
style D2 fill:#8e44ad,stroke:#fff,stroke-width:2px,color:#fff
style D3 fill:#d35400,stroke:#fff,stroke-width:2px,color:#fff
style D4 fill:#16a085,stroke:#fff,stroke-width:2px,color:#fff2. Ligação Tardia (Late Binding) vs. Precoce (Early Binding)
Para utilizar o FSO, a forma mais compatível e recomendada em ambientes corporativos é a Ligação Tardia (Late Binding) através da função CreateObject:
(Essa abordagem dispensa ter que ativar referências manuais nas opções do VBE, funcionando em qualquer computador da empresa!).
3. Principais Métodos do FSO
| Método | Sintaxe | Finalidade |
|---|---|---|
FolderExists | fso.FolderExists(caminho) | Retorna True se o diretório já existir no disco. |
CreateFolder | fso.CreateFolder(caminho) | Cria uma nova pasta no sistema de arquivos. |
FileExists | fso.FileExists(caminho) | Retorna True se o arquivo físico existir. |
CreateTextFile | Set arq = fso.CreateTextFile(caminho, True) | Cria ou sobrescreve um novo arquivo de texto. |
WriteLine | arq.WriteLine "texto" | Grava uma linha de texto adicionando quebra de linha. |
Close | arq.Close | Fecha o manipulador e libera o arquivo no Windows. |
📖 Exemplo Guiado: Passo a Passo no Laboratório
No computador do laboratório, acesse o VBE com Alt + F11.
Passo 1: Inserção do Módulo de Automação de Arquivos
- No menu superior, clique em Inserir ➔ Módulo.
- Na janela de propriedades (
F4), renomeie o módulo para:modIntegracaoFSO. - Confirme a presença de
Option Explicit.
🛠️ Prática Obrigatória 1: Criação de Pastas e Exportação em Formato CSV
Construiremos a rotina corporativa que varre os dados da planilha e os exporta para um arquivo .csv na pasta C:\FastLog_Exportacoes\Ano_Mes\.
Passo a Passo no Computador:
No módulo
modIntegracaoFSO, digite o seguinte procedimento completo:Preparação dos Dados no Excel:
- Na Planilha 1, certifique-se de preencher a tabela de fretes faturados:
- A1:
ID| B1:Placa| C1:Motorista| D1:Valor| E1:Data - A2:
MDF-101|BRA2E19|Carlos Mendes|4500|01/10/2026 14:30:00 - A3:
MDF-102|ABC1234|Marcos Fonseca|2850|01/10/2026 15:10:00
- A1:
- Na Planilha 1, certifique-se de preencher a tabela de fretes faturados:
Execução:
- No VBE, pressione
F5. - Abra o Explorador de Arquivos do Windows (
Win + E). - Acesse a unidade
C:\. Veja a pastaFastLog_Exportacoescriada automaticamente, contendo a subpasta do ano/mês e o arquivo.csvdentro dela! - Abra o arquivo no Bloco de Notas: os dados estão perfeitamente formatados com ponto e vírgula!
- No VBE, pressione
✅ Resultado Esperado (Prática 1):
O robô cria pastas e arquivos de forma autônoma no disco rígido sem exibir telas do sistema operacional ao operador.
🛠️ Prática Obrigatória 2: Leitura Automatizada de Arquivos Externos
Agora desenvolveremos a rotina reversa: leremos o arquivo recém-gerado linha por linha via método OpenTextFile do FSO e exibiremos o extrato das notas.
Passo a Passo no Computador:
- No mesmo módulo, insira o leitor de arquivos texto:
- Execute a rotina
LerArquivoExportado(F5):- O sistema abre o arquivo, lê os registros na velocidade do disco e confirma o número total de linhas lidas.
✅ Resultado Esperado (Prática 2):
O robô realiza operações completas de entrada e saída (I/O), sendo capaz de ler e gravar dados externos sem carregar janelas visuais.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_17_VBA_SeuNome_SeuSobrenome.xlsm. - Acesse a plataforma Microsoft Teams.
- Abra a tarefa: “VBA - Cap 17: Automação com FileSystemObject (FSO)”.
- Anexe sua pasta de trabalho e entregue.
💡 Checkpoint de Gestão & TI
A interoperabilidade com o sistema de arquivos do Windows é a pedra fundamental do Robotic Process Automation (RPA). Em grandes empresas, os sistemas legados de ERP e os órgãos governamentais não se comunicam por planilhas, mas por arquivos planos (flat files) de texto e CSV. Ao dominar o FSO, o desenvolvedor capacita o Excel a agir como uma ponte automática entre a planilha do usuário e os servidores corporativos.
🔥 Desafio de Fixação: Backup Automático da Planilha
Crie a macro de contingência RealizarBackupDiario:
- Use o método
fso.CopyFile ThisWorkbook.FullName, strDestino, True. - O destino deve ser uma pasta
C:\FastLog_Backups\. - O nome do arquivo salvo deve incluir a data atual (ex:
Backup_FastLog_20261001.xlsm). - Exiba uma notificação avisando que a cópia de segurança foi gravada com sucesso.
📝 Atividade Extra: Questionário de Fixação (Caderno)
Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que você estudou neste capítulo. Ao concluir, apresente o caderno ao professor para visto.
- O que representa a biblioteca
Scripting.FileSystemObject(FSO) e qual é a sua utilidade em automações de escritório? - Por que utilizamos a abordagem de Ligação Tardia (Late Binding) com
CreateObject("Scripting.FileSystemObject")? - Qual método do FSO utilizamos para verificar se um diretório já existe antes de criá-lo?
- Como funciona o método
CreateFoldere o que ocorre se tentarmos criar uma pasta que já existe? - Qual é o papel do segundo parâmetro booleano (
True) no métodofso.CreateTextFile(caminho, True)? - O que o método
WriteLinefaz ao gravar dados em um arquivo de texto? - Por que é estritamente obrigatório chamar o método
.Closeao terminar de manipular um arquivo de texto? - No Cenário da FastLog, por que o arquivo CSV foi gerado com separador de ponto e vírgula (
;) em vez de vírgula (,)? - Como a propriedade
AtEndOfStreamé utilizada no laçoDo Whiledurante a leitura de arquivos externos? - No Desafio de Fixação, qual método do FSO foi empregado para duplicar a pasta de trabalho atual como backup?