O que é “Dim fso, MyFile, FileName, TextLine” em VBA?
-
19-09-2019 - |
Pergunta
recebi este código de uma dessas boas pessoas aqui que estão dispostos a gastar seu tempo e energia para compartilhar seus conhecimentos com noobs:
Sub ReadLinesFromAFileOneAfterAnother ()
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, MyFile, FileName, TextLine
Set fso = CreateObject("Scripting.FileSystemObject")
FileName = "c:\testfile.txt"
Set MyFile = fso.OpenTextFile(FileName, ForReading)
'' Read from the file
Do While MyFile.AtEndOfStream <> True
TextLine = MyFile.ReadLine
'' Do stuff to TextLine
Loop
MyFile.Close
End Sub
Enquanto eu sei que tarefa Isso executa código, eu ainda gostaria de saber o que cada um de seus meios elementos e faz. Alguém pode, por favor, me explicar o que a terceira linha deste código é tudo sobre: ??
Dim fso, MyFile, FileName, TextLine
O que é "FSO" em primeiro lugar? Eu sei que isso significa "File System objeto", mas faz pouco para me explicar o que ele realmente é eo que ele realiza. O que esses três seguintes palavras significam ( "MyFile", "nome do arquivo", "TextLine")? Eles são uma espécie de parâmetros de alguma coisa?
Eu li o seguinte: http://msdn.microsoft.com/en-us /library/h7se9d4f(VS.85).aspx
e este: http://msdn.microsoft .com / en-us / library / ebkhfaaz (VS.85) .aspx
mas parece que esses materiais são wrriten para aqueles que se seria capaz de escrevê-los - eu quase não entendeu nada. Algumas coisas, é claro, são mais ou menos clara, mas há tantos outros termos e palavras que eu não sei! Eventualmente, não há um toda a imagem completa e clara.
Então, eu desisti e decidiu voltar aqui. Este site é provavelmente um dos poucos na internet (na verdade eu não conheço qualquer outro), que declarou em suas regras: "Nenhuma pergunta é demasiado trivial ou muito 'novato'". Isso me dá uma espécie de terreno para pedir este presente questão.
Então, por favor, alguém, me explicar em termos simples o que "FSO" é. Precisamente, o que a terceira linha do código acima é tudo.
Obrigado a todos com antecedência.
Solução
A linha de código:
Dim fso, MyFile, FileName, TextLine
declara coisas chamadas 'variáveis' de variante tipo.
Uma variável é um pouco de espaço na memória com um nome e um tipo. Você usá-los para deixar o programa sabe que você vai estar fazendo uso deles mais tarde no código.
Normalmente você daria as variáveis ??de um tipo (como inteiro, ou string), mas o codificador não tem, por isso foi padronizada como variante, que pode assumir qualquer tipo (em essência).
Uma vez feito:
Set fso = CreateObject("Scripting.FileSystemObject")
então contém fso um pouco de código que pode fazer coisas para o sistema de arquivos.
Set MyFile = fso.OpenTextFile(FileName, ForReading)
significa que você está usando a funcionalidade fso para abrir um arquivo que você especificar na variável 'filename', e você colocar uma referência a ele na variável 'myfile'.
Então você pode, então, fazer mais coisas com o arquivo usando a variável myfile.
O 'fazer enquanto' laço lê através dessa linha de um arquivo de cada vez (myfile.readline) e coloca o resultado na variável 'TextLine', que mantém uma linha diferente de texto do arquivo cada vez que você ir ao redor do loop, até que o arquivo for concluído.
A idéia deste código é ler o arquivo linha por linha, fazendo coisas com o conteúdo de cada linha como você se deparar com ela. Você pode imprimi-lo, registrá-lo, exibi-lo para o usuário, etc, como o título do sub indica!
Para ser honesto o básico sobre VB são essenciais para você ser capaz de interpretar esse código então eu sugiro à procura de um tutorial on-line ou um livro.
Outras dicas
Tudo o que linha está fazendo, está definindo os como variáveis ??a serem usadas mais abaixo no código
Consulte também este post no StackOverflow: que O DIM ficar no Visual Basic e BASIC?
Dim fso, MyFile, FileName, TextLine
Esta linha define as variáveis.
O propósito de fazer para que ele para erros de digitação ajuda de captura como as variáveis ??são referenciados em todo o script. Isso normalmente é usado dentro com conjunto Option Explicit (geralmente encontrado no topo do script).
Por padrão, o VBA não requerem essa variável ser definido. Pode-se substituir este [tolo] comportamento padrão usando a Option Explicit
opção para que uma exceção "variável indefinida" ser produzido quando uma determinada variável não está definida.
Sem essa configuração, na questão do trecho se, por exemplo, na linha 4 tínhamos inadertently typo-ed o nome FILENAM, omitindo o e, VBA iria prosseguir, tendo efetivamente duas variáveis ??nome do arquivo e FILENAM; mais tarde no programa, ao usar, corretamente, a variável FileName, um valor vazio seria usado, levando a sutil e difícil de encontrar bugs .
Essa 3ª linha simplesmente define-los para ser usado mais tarde. FSO, Matrícula etc são variáveis ??simplesmente espaço reservado para ser usado mais tarde no código. FSO é declarada e definida como um novo objeto de sistema de arquivos. Isto poderia ser qualquer tipo de sistema de arquivos - NTFS, FAT etc, mas tudo o que significa é que você está prestes a trabalhar com os arquivos no sistema. Então você usá-lo para abrir o arquivo especificado somente para leitura, e longe do resto do código vai. Você precisa especificar o FSO para que o programa sabe onde para ler - seja ele um arquivo, um fluxo de entrada ou um sistema de arquivos adicional separada
.Espero que ajude um pouco!