O que é o FileSystemObject (FSO) e como usá-lo no VBA Excel?

Fb-Botão

O FileSystemObject é utilizado para trabalhar com pastas e arquivos conectados com o sistema. Podemos usá-lo para acessar arquivos, pastas, drive e fluxos de texto. Ele não pode apenas acessar arquivos, pastas e arquivos de texto, mas também pode criar. Estas operações não se limitam ao disco rígido do sistema, mas qualquer dispositivo conectado ao arquivo. Isso significa que você pode acessar pen drives, CD roms, ou virtualmente conectados drives de rede.

estas são as operações que podemos fazer usando FileSystemObject em VBA:

para criar, abrir, ler, escrever e excluir arquivos de texto.

para adicionar, alterar e apagar pastas.

para iterar através de ficheiros e pastas.

para copiar e mover ficheiros ou pastas para outros locais.

para verificar se existe um ficheiro ou pasta no local ou não

Como aceder ao FileSystemObject em VBA?

o objeto do sistema de arquivos é uma parte da Microsoft Scripting Runtime Library. Para acessar um FileSystemObject precisamos conectar ou adicionar uma referência à Microsoft Scripting Runtime Library ou Scrun.dll.

Nota: O FileSystemObject não suporta a operação de ficheiros binários porque o Scrun.dll suporta a criação e manipulação de arquivos usando objeto TextStream.

Existem dois métodos para criar um FileSystemObject em VBA:

1: Criar um objecto FSO usando o método CreateObject:

Usando este método, primeiro declaramos um tipo de objecto variável. Em seguida, definir a referência do objeto FSO para essa variável usando CreateObject:

Sub LearnFso() 'Creating the object variable Dim fso As Object 'Create the FileSystemObject using Create Object Method Set fso = CreateObject("Scripting.FileSystemObject") Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR")End Sub

este método é dinâmico e transferível. Significa que, se você está compartilhando o código para outros sistemas, este código vai funcionar perfeitamente. Não importará que versão da Microsoft Runtime Scripting versão que você tem.

A única desvantagem é que você não será capaz de ver o intelecto fornecido pela VBA. Você terá que depender de seu conhecimento para usar todas as propriedades e métodos de FileSystemObject.

2: Criar um objecto FSO adicionando referência à programação de execução da Microsoft

pode criar directamente um ficheiro no VBA, usando a nova palavra-chave. Para isso, você terá que adicionar uma referência ao último tempo de execução de script Microsoft em seu sistema.

para adicionar a referência, vá para a opção de referências no menu Ferramentas. Aqui, Encontre o Microsoft Scripting Runtime dll. Verifique e clique OK.

Agora você está pronto para criar e usar o objeto FSO.

Sub LearnFso() Dim fso as new FileSystemObject Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR") End Sub

Ou

Sub LearnFso() Dim fso as FileSystemObject Set fso = New FileSystemObject Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR") End Sub

Ambos funcionam bem.

uma grande vantagem deste método é que você será capaz de ver a inteligência do VBA. O VBA mostrar-lhe-á todas as propriedades e métodos do objecto fso. Ele também vai dizer que tipo de variáveis ele vai aceitar e que tipo de valor ele vai retornar.

Se você compartilhar esse código para outros sistemas, você terá que dizer-lhes para adicionar a referência para Scripting Runtime de ferramentas, caso contrário, eles vão receber um erro de compilação que o tipo definido pelo usuário não está definido. Então é como importar outras linguagens de programação.

Note que FSO não é uma palavra-chave. Você pode usá-lo como um nome de variável. É apenas uma convenção para nomear filesystemobject como fso. É por isso que algumas pessoas confundem a palavra-chave.ambos os métodos de criação de objetos FSO têm suas vantagens e desvantagens que mencionei ao explicá-los. Então, usa como quiseres. Neste artigo, vou usar o segundo método de criação de FileSystemObject.

Agora que sabemos como criar um FileSystemObject em VBA, vamos usar este conhecimento para fazer algumas tarefas significativas. Quero dizer, vamos aos exemplos.exemplo 1: Obter toda a sub-pasta numa pasta indicada

o primeiro exemplo que vamos ver é obter os nomes das sub-pastas de uma pasta específica.

Sub LearnFso()' decaring variables that we will need Dim fso As FileSystemObject ' Variable for the FileSystemObject Dim fdr As Folder ' Variable for the base folder Dim subfdr As Folder ' Variable for the sub folders Dim fdrpath As String 'to store path of base folder 'Intializing the objects fdrpath = "D:\Downloads" 'Declaring the folder Set fso = New FileSystemObject 'Creating the fso object Set fdr = fso.GetFolder(fdrpath) 'Creating the folder object of given folder 'loop to get all the sub folders name in For Each subfdr In fdr.SubFolders Debug.Print subfdr.Name Next subfdrEnd Sub

quando você executa o código acima, isto é o que você recebe.

Yeah! É a minha pasta de download. Não te concentres nisso.como é que isto funcionou?vamos compreender em passos:: Decaring variáveis que precisamos

Dim fso Como FileSystemObject ‘Variável para o FileSystemObject

Dim fdr Como Pasta’ Variável para a pasta base

Dim subfdr Como Pasta ‘ Variável para a sub-pastas

o Primeiro declara-se todas as variáveis que iremos utilizar neste exemplo. A primeira variável é, naturalmente, o FSO como objeto file sytem. As duas variáveis fdr e subfdr são do tipo de pasta. Vamos usar o objeto fso para criar um objeto tipo de arquivo em vez de criar diretamente. O fdrpath é usar a variável é usada para manter o caminho da pasta de base da qual queremos obter todas as sub-pastas.

2: Intialização dos objectos

fdrpath = “D:\Downloads “‘Declaring the folder

Set FSO = New FileSystemObject’ Creating the FSO object

Set fdr = fso.GetFolder (fdrpath) ‘ao criar o objecto de pasta da pasta indicada

neste passo inicializámos todos os objectos que tínhamos declarado, excepto o subfdr. Note que nós temos intializado a variável de arquivos fdr usando o método getFolder de objetos fso.

o método GetFolder() do FileSystemObject segue o caminho de uma pasta ou pasta como texto e devolve o objecto do tipo de ficheiro.

3: loop para obter o nome de todas as sub-pastas no objeto de pasta

para cada subfdr em fdr.Subpastas

depurar.Imprimir subfdr.Name

subfdr seguinte

aqui usamos um para cada loop para percorrer cada sub-pasta no objecto de ficheiro fdr. Usamos a propriedade das subpastas do objeto de arquivo para fazer loop.

usamos a propriedade nome para obter os nomes de cada subpasta. E está feito.Exemplo 2: Obter todos os caminhos de arquivos em uma pasta e são subpastas

para obter todos os caminhos ou nomes totalmente qualificados de todos os arquivos em uma pasta e é subpasta, precisamos adicionar mais algumas linhas no código exemplo 1.

Sub LearnFso()Dim fso As FileSystemObjectDim fdr As Folder ' Variable for the base folderDim subfdr As Folder ' Variable for the sub foldersDim fdrpath As String 'to store path of base folderDim fl As File 'to store file objectfdrpath = "D:\downloads"Set fso = New FileSystemObjectSet fdr = fso.GetFolder(fdrpath)'loop to get all the sub folders name inFor Each subfdr In fdr.SubFolders For Each fl In subfdr.Files 'to loop throgh each file Debug.Print fl.Path 'getting file name Next flNext subfdr'to get the files of main folderFor Each fl In fdr.Files Debug.Print fl.PathNext flEnd Sub

a pasta.O método Files () é o método que devolve os ficheiros numa sub-pasta. arquivo.O método Path () devolve o endereço completo do ficheiro.

cada um de nós tem um loop interno para iterar através de todos os arquivos na subpasta da pasta principal e sua.

para obter os arquivos da pasta principal usamos outro loop.exemplo 3: Grava os nomes dos ficheiros num ficheiro CSV.

no exemplo anterior aprendemos a imprimir os caminhos de arquivos de pastas específicas na janela imediata. Neste exemplo, vamos aprender como salvar esses caminhos em um arquivo CSV. Para isso, basta acrescentar algumas linhas ao código. Veja as linhas de código bolde abaixo.

Sub LearnFso()Dim fso As FileSystemObjectDim fdr As Folder ' Variable for the base folderDim subfdr As Folder ' Variable for the sub foldersDim fdrpath As String 'to store path of base folderDim fl As File 'to store file objectDim fileList As TextStream 'A textstream objectfdrpath = "D:\downloads"Set fso = New FileSystemObjectSet fdr = fso.GetFolder(fdrpath)Set fileList = fso.CreateTextFile(fdrpath & "\File List in This Folder.csv", True, False)'loop to get all the sub folders name inFor Each subfdr In fdr.SubFolders For Each fl In subfdr.Files 'to loop through each file fileList.Write fl.Path & "," Next flNext subfdr'to get the files of main folderFor Each fl In fdr.Files fileList.Write fl.Path & ","Next fl fileList.CloseEnd Sub

Aqui, nós declaramos um novo objeto de tipo FileStream chamado fileList

inicializamos a variável filelist com um objeto filestream usando a linha abaixo.

Set fileList = fso.CreateTextFile (fdrpath & “\File List nesta pasta.csv”, True, False)

usamos o método CreateTextFile do FSO para criar um objeto FileStream. Cria um ficheiro de texto. Este método aceita o nome de um arquivo com um caminho completo. A primeira variável é fazê-lo. Nós usamos o .extensão csv para criar um arquivo csv. A segunda variável é usada para permitir a substituição. O terceiro argumento é falso para declarar que não é um arquivo binário.

nos loops, substituímos a depuração.imprimir com filelista.Método de escrita para escrever cada caminho de arquivo no arquivo criado. então sim, pessoal, é assim que podem usar o FileSystemObject. O FSO pode ser usado para muitas mais coisas, que iremos discutir nos próximos artigos. Se você tiver dúvidas sobre este Artigo da consulta relacionada com a FSO, pergunte – me na seção de comentários abaixo.

começando com o Excel VBA UserForms / I explicará como criar um formulário no excel, como usar a caixa de ferramentas VBA, como lidar com as entradas do Usuário e, finalmente, como armazenar as entradas do Usuário. Iremos analisar estes tópicos usando um exemplo e passo a passo guia.

VBA variables in Excel / VBA significa Visual Basic for Applications. É uma linguagem de programação da Microsoft. Ele é usado com aplicativos do Microsoft Office, como MSExcel, MS-Word e MS-Access, enquanto as variáveis VBA são palavras-chave específicas.

Excel VBA Variable Scope| In all the programming languages, we have variable access specifiers that definite from where a defined variable can be accessed. O Excel VBA não é exceção. VBA também tem especificadores de escopo.

ByRef and ByVal Arguments / When an argument is passed as a ByRef argument to a different sub or function, the reference of the actual variable is sent. Quaisquer alterações feitas na cópia da variável, serão refletidas no argumento original.

Delete sheets without confirmation prompts using VBA in Microsoft Excel / Since you are deleting sheets using VBA, you know what you are doing. Você gostaria de dizer ao Excel para não mostrar este aviso e excluir a maldita folha.

Adicione e salve um novo livro de trabalho usando VBA no Microsoft Excel 2016| neste código, nós primeiro criamos uma referência a um objeto de livro de trabalho. E então inicializamos com um novo objeto de livro de trabalho. O benefício desta abordagem é que você pode fazer operações neste novo manual facilmente. Como gravar, fechar, excluir, etc

exibir uma mensagem na barra de Estado VBA do Excel| a barra de Estado no excel pode ser usada como um monitor de código. Quando o seu código VBA é longo e você faz várias tarefas usando VBA, você geralmente desativa a atualização do ecrã para que você não veja esse ecrã piscando.

Desligue as mensagens de aviso usando VBA no Microsoft Excel 2016| este código não só desactiva os alertas VBA, mas também aumenta a eficiência de tempo do Código. Vamos ver como.

artigos populares:

50 atalhos do Excel para aumentar a sua produtividade | ficar mais rápido em sua tarefa. Estes 50 atalhos vão fazer você trabalhar ainda mais rápido no Excel.

A função VLOOKUP no Excel | esta é uma das funções mais usadas e populares do excel que é usado para procurar valor de diferentes gamas e folhas.

COUNTIF in Excel 2016 / Count values with conditions using this amazing function. Você não precisa filtrar seus dados para contar valores específicos. A função Countif é essencial para preparar o painel de instrumentos.

Como usar a função SUMIF no Excel | esta é outra função essencial do painel de instrumentos. Isso ajuda você a somar valores em condições específicas.

Deixe um comentário