VBA FileSystemObject (FSO)

Excel VBA FileSystemObject (FSO)

O VBA FileSystemObject (FSO) funciona de forma semelhante ao FileDialog, usado para obter acesso a outros arquivos do computador em que estamos trabalhando. Também podemos editar esses arquivos significa ler ou gravar o arquivo. Usando FSO podemos acessar arquivos, trabalhar com eles, modificar arquivos e pastas. FSO é a ferramenta API importante que podemos acessar com o VBA. Como parte do projeto VBA, podemos precisar acessar algumas pastas e arquivos em nosso computador para fazer o trabalho.

Podemos fazer muitas tarefas usando o FSO como “verificar se a pasta está disponível ou não”, Criar uma nova pasta ou arquivos, renomear a pasta ou arquivos existentes, obter a lista de todos os arquivos na pasta e também os nomes das subpastas, e finalmente, podemos copiar arquivos de um local para outro.

Mesmo que existam outras funções disponíveis para trabalhar com pastas e arquivos, FSO é o método mais fácil de trabalhar com pastas e arquivos, mantendo o código VBA organizado e direto.

Podemos acessar 4 tipos de objetos com FileSystemObject. Abaixo estão aqueles.

  1. Drive: Usando este objeto podemos verificar se o drive mencionado existe ou não, podemos obter o nome do caminho, tipo de drive e tamanho do drive.
  2. Pasta: Este objeto permite verificar se a pasta específica existe ou não. Podemos criar, excluir, modificar, copiar pastas usando este objeto.
  3. Arquivo: Este objeto permite verificar se o arquivo específico existe ou não. Podemos criar, excluir, modificar e copiar arquivos usando este objeto vba.
  4. Fluxo de texto: Este objeto nos permite criar ou ler arquivos de texto.

Todos os métodos acima têm seus próprios métodos de trabalho. Com base em nosso requisito, podemos escolher o método de cada objeto.

Como habilitar FileSystemObject?

Não é facilmente acessível no VBA. Uma vez que acessar arquivos e pastas é uma tarefa externa do Excel, precisamos habilitar o FileSystemObject. Para habilitar, siga as etapas abaixo.

Etapa # 1: Vá para Ferramentas> Referências.

Etapa 2 - Selecione a opção 'Microsoft Scripting Runtime'

Role para baixo e selecione a opção 'Microsoft Scripting Runtime'. Após selecionar as opções, clique em OK.

Agora podemos acessar o FileSystemObject (FSO) no vba.

Crie uma instância de FileSystemObject

Assim que a opção 'Microsoft Scripting Runtime' estiver habilitada na biblioteca de objetos, precisamos criar a instância do objeto do sistema de arquivos (FSO) por meio da codificação.

Para criar a instância, primeiro declare a variável como FileSystemObject.

Como podemos ver, FileSystemObject está aparecendo na lista do IntelliSense no VBA. Isso não estaria disponível antes de habilitarmos o 'Microsoft Scripting Runtime'.

Como FSO é um objeto, precisamos configurá-lo para criar uma nova instância.

Agora podemos acessar todas as opções do FSO (FileSystemObject).

Exemplos para usar VBA FileSystemObject

Você pode baixar este modelo VBA FileSystemObject Excel aqui - modelo VBA FileSystemObject Excel

Exemplo # 1 - Encontre o espaço total em disco

O código abaixo fornecerá o espaço total da unidade.

Código:

 Sub FSO_Example1 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = Novo FileSystemObject Dim DriveName As Drive Dim DriveSpace As Double Set DriveName = MyFirstFSO.GetDrive ("C:") 'Criar novo objeto de unidade DriveSpace = DriveName.FreeSpace' Isto irá obter o espaço livre da unidade "C" DriveSpace = DriveSpace / 1073741824 'Isso irá converter o espaço livre em GB DriveSpace = Round (DriveSpace, 2)' Round the total space MsgBox "Drive" & DriveName & "has" & DriveSpace & "GB" End Sub 

Divisão do Código.

Primeiro, criamos uma instância do FSO.

 Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject

Em seguida, declaramos duas variáveis.

 Dim DriveName As Drive Dim DriveSpace As Double 

Como DriveName é uma variável Object, precisamos defini-la como FSO um dos métodos FSO. Como precisamos da característica da unidade, usamos a opção Get Drive e mencionamos o nome da unidade

 Definir DriveName = MyFirstFSO.GetDrive ("C:")

Agora, para outra variável DriveSpace, atribuiremos o método de espaço livre da unidade que estamos acessando.

DriveSpace = DriveName.FreeSpace

A partir de agora, a equação acima pode nos dar espaço livre da unidade “C”. Então, para mostrar o resultado em GB, dividimos o espaço livre por 1073741824

DriveSpace = DriveSpace / 1073741824

A seguir, arredondaremos o número.

DriveSpace = Round (DriveSpace, 2)

Finalmente, mostre o resultado na caixa de mensagem.

MsgBox "Drive" & DriveName & "has" & DriveSpace & "GB"

Ao executarmos o código manualmente ou através da tecla de atalho F5, então na caixa de mensagem obteremos o espaço livre do drive “C”.

Portanto, no meu computador o Drive C tem 216,19 GB de espaço livre na memória.

Exemplo 2 - Verifique se a pasta existe ou não

Para verificar se a pasta específica existe ou não, use o código abaixo.

Se a pasta mencionada estiver disponível, ela nos mostrará a caixa de mensagem como “A pasta mencionada está disponível” , caso contrário, mostrará a caixa de mensagem VBA como “A pasta mencionada não está disponível”.

Código:

 Sub FSO_Example2() Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FolderExists("D:\Excel Files\VBA\VBA Files") Then MsgBox "The Mentioned Folder is Available" Else MsgBox "The Mentioned Folder is Not Available" End If End Sub 

Run this code through the excel Shortcut key F5 or manually, then see the result.

Example #3 – Check Whether the File Exists or Not

Below code will check whether the mentioned file is available or not.

Code:

 Sub FSO_Example3() Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FileExists("D:\Excel Files\VBA\VBA Files\Testing File.xlsm") Then MsgBox "The Mentioned File is Available" Else MsgBox "The Mentioned File is Not Available" End If End Sub 

Run this code manually or using the F5 key, then see the result.