What is “Dim fso, MyFile, FileName, TextLine” in VBA?
我从这里一个愿意花费时间和精力与Noobs分享知识的好人那里收到了这段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 |
虽然我知道这段代码执行什么任务,但我仍然想知道它的每个元素的含义和作用。请任何人向我解释一下这段代码的第三行是关于什么的:
1 | Dim fso, MyFile, FileName, TextLine |
首先,"FSO"是什么?我知道它代表"文件系统对象",但它几乎不能向我解释它到底是什么以及它完成了什么。下面这三个词是什么意思("myfile"、"filename"、"textline")?它们是某种参数吗?
我读过这个:http://msdn.microsoft.com/en-us/library/h7se9d4f(vs.85).aspx
以下是:http://msdn.microsoft.com/en-us/library/ebkhfaaz(vs.85).aspx
但我觉得这些材料是为那些自己能写的人而写的——我几乎什么都不懂。当然,有些事情或多或少是清楚的,但是还有很多其他的术语和单词我不知道!最终,没有一个完整清晰的画面。
所以,我放弃了,决定回到这里。这个网站可能是互联网上为数不多的(事实上我还没有见过其他网站)在其规则中声明:"没有问题是太琐碎或太"新手"。这给了我一种提出这个问题的理由。
所以,任何人,请用简单的术语向我解释"fso"是什么。准确地说,上面代码的第三行是关于什么的。
提前谢谢大家。
代码行:
1 | Dim fso, MyFile, FileName, TextLine |
声明称为variant类型的"variables"的内容。
变量是内存中带有名称和类型的一点空间。您可以使用它们让程序知道您稍后将在代码中使用它们。
通常情况下,你会给变量一个类型(比如整数或字符串),但是编码人员没有,所以它默认为variant,它可以接受任何类型(本质上)。
完成后:
1 | Set fso = CreateObject("Scripting.FileSystemObject") |
然后,fso包含一些代码,可以对文件系统做一些事情。
1 | Set MyFile = fso.OpenTextFile(FileName, ForReading) |
意味着您正在使用fso功能打开在"filename"变量中指定的文件名,并在"myfile"变量中对其进行引用。
因此,您可以使用myfile变量对该文件进行进一步的处理。
"do while"循环一次读取一行文件(myfile.readline),并将结果放入"text line"变量中,每次循环时,该变量保存文件中不同的文本行,直到文件完成。
这段代码的思想是一行一行地读取文件,当您遇到每一行的内容时,对其进行一些处理。你可以打印它,记录它,显示给用户,等等,如子标题所示!
老实说,关于VB的基本知识对于你能够解释这些代码是至关重要的,所以我建议你找一个在线教程或一本书。
这一行所要做的就是将这些变量定义为代码中要进一步使用的变量。
另请参阅StackOverflow上的这篇文章:在VisualBasic和Basic中,dim代表什么?
1 | Dim fso, MyFile, FileName, TextLine |
这一行定义变量。这样做的目的是帮助捕获打字错误,因为变量在整个脚本中都被引用。这通常与e option explicit(通常位于脚本顶部)一起使用。
默认情况下,VBA不需要定义该变量。可以通过使用选项
第三行简单地定义了它们,以便稍后使用。fso、文件名等只是在代码后面使用的占位符变量。fso被声明并设置为新的文件系统对象。这可以是任何类型的文件系统-NTFS、FAT等,但这意味着您将要使用系统上的文件。然后使用它来打开指定的只读文件,并去掉其余代码。您需要指定fso,以便程序知道从何处读取-无论是文件、输入流还是单独的附加文件系统。
希望能有所帮助!