Dir()函数理解

时间:2016-09-01 14:13:21

标签: excel vba excel-vba directory

' Display the names in C:\ that represent directories.
MyPath = "c:\"   ' Set the path.
MyName = Dir(MyPath, vbDirectory)   ' Retrieve the first entry.
Do While MyName <> ""   ' Start the loop.
      ' Use bitwise comparison to make sure MyName is a directory. 
      If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then 
         ' Display entry only if it's a directory.
         MsgBox(MyName)
      End If   
   MyName = Dir()   ' Get next entry.
Loop

我正在查看上面的代码。我特别不明白&#34; MyName = Dir()&#34;确实。评论它是下一个条目,但我不明白它是如何得到下一个条目 - 具体是Dir()做什么?

2 个答案:

答案 0 :(得分:10)

Dir是具有边缘效应的函数。

第一次调用DirMyName = Dir(MyPath, vbDirectory)初始化Dir内部并返回第一个目录条目。

Dir的后续调用使用相同的上下文,逐个生成MyPath目录内容。

它不是可重入的(这也是为什么你不能使用Dir嵌套/递归多个循环的原因),不是很优雅,但这就是它的工作原理。

答案 1 :(得分:2)

根据Dir() MSDN,它

  

返回一个字符串,表示与指定的模式或文件属性或驱动器的卷标签匹配的文件,目录或文件夹的名称。