什么是VBA中的“Dim fso,MyFile,FileName,TextLine”?

时间:2009-11-12 13:33:14

标签: vba scripting createobject filesystemobject

我收到了一位来自这里的好朋友的代码,他们愿意花时间和精力与新手分享他们的知识:

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 个答案:

答案 0 :(得分:6)

代码行:

Dim fso, MyFile, FileName, TextLine

声明类型为variant的'变量'。

变量是内存中的一些空间,带有名称和类型。你使用它们让程序知道你以后会在代码中使用它们。

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

完成后:

Set fso = CreateObject("Scripting.FileSystemObject")

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

Set MyFile = fso.OpenTextFile(FileName, ForReading)

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

因此,您可以使用myfile变量对文件进行更多操作。

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

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

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

答案 1 :(得分:5)

该行正在进行中,将这些变量定义为在代码中进一步使用的变量

另请参阅StackOverflow上的这篇文章:What does DIM stand for in Visual Basic and BASIC?

答案 2 :(得分:2)

Dim fso, MyFile, FileName, TextLine

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

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

答案 3 :(得分:1)

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

我希望有所帮助!