我收到了一位来自这里的好朋友的代码,他们愿意花时间和精力与新手分享他们的知识:
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”是什么。确切地说,上面代码的第三行是什么。
提前谢谢大家。
答案 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,以便程序知道从哪里读取 - 无论是文件,输入流还是单独的附加文件系统。
我希望有所帮助!