1

我从这里的一位好人那里收到了这段代码,他们愿意花时间和精力与菜鸟分享他们的知识:

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

虽然我知道这段代码执行什么任务,但我仍然想知道它的每个元素的含义和作用。请任何人向我解释这段代码的第三行是什么:

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”是什么。确切地说,上面代码的第三行是关于什么的。

谢谢大家。

4

4 回答 4

6

代码行:

Dim fso, MyFile, FileName, TextLine

声明称为变体类型的“变量”的东西。

变量是内存中的一小块空间,带有名称和类型。您使用它们让程序知道您稍后将在代码中使用它们。

通常你会给变量一个类型(如整数或字符串),但编码器没有,所以它默认为变量,它可以采用任何类型(本质上)。

完成后:

Set fso = CreateObject("Scripting.FileSystemObject")

然后 fso 包含一些可以对文件系统执行操作的代码。

Set MyFile = fso.OpenTextFile(FileName, ForReading)

意味着您正在使用 fso 功能打开您在 'filename' 变量中指定的文件名,并且已经在 'myfile' 变量中放置了对它的引用。

因此,您可以使用 myfile 变量对文件进行进一步处理。

“do while”循环一次读取一行文件(myfile.readline)并将结果放入“textline”变量中,每次循环时,该变量都会保存文件中不同的文本行,直到文件完成。

这段代码的想法是逐行读取文件,当你遇到它时对每一行的内容进行处理。正如子标题所示,您可以打印、记录、显示给用户等!

老实说,关于 VB 的基础知识对于您能够解释此类代码至关重要,因此我建议您寻找在线教程或书籍。

于 2009-11-12T13:43:17.100 回答
5

这行所做的就是将它们定义为要在代码中进一步使用的变量

另请参阅 StackOverflow 上的这篇文章:DIM 在 Visual Basic 和 BASIC 中代表什么?

于 2009-11-12T13:36:31.220 回答
2
Dim fso, MyFile, FileName, TextLine

这一行定义了变量。
这样做的目的是帮助捕获拼写错误,因为在整个脚本中都引用了变量。这通常与Option Explicit一起使用 (通常位于脚本的顶部)。

默认情况下,VBA 不需要定义该变量。可以通过使用该选项来覆盖这种 [愚蠢的] 默认行为,Option Explicit以便在未定义特定变量时产生“未定义变量”异常。
如果没有这个设置,在问题的片段中,例如在第 4 行,我们无意中输入了名称 FileNam,省略了 e,VBA 将继续进行,实际上有两个变量 FileName 和 FileNam;稍后在程序中,当正确使用变量 FileName 时,将使用空值,从而导致微妙且难以发现的错误

于 2009-11-12T13:39:13.973 回答
1

第 3 行简单地定义了它们以供以后使用。Fso、Filename 等只是稍后在代码中使用的占位符变量。fso 被声明并设置为一个新的文件系统对象。这可以是任何类型的文件系统 - NTFS、FAT 等,但这意味着您将要使用系统上的文件。然后你用它打开指定为只读的文件,剩下的代码就走了。您需要指定 fso 以便程序知道从哪里读取 - 无论是文件、输入流还是单独的附加文件系统。

我希望这有所帮助!

于 2009-11-12T13:38:10.963 回答