VBA读取文件路径中的文件

项目开发进行中,为了提高工作效率,减少错误率,不得不用到VBA去开发些使用的工具【应该感谢excel强大】

其中有一个很重要的应用就是读取某一目录中的文件

本文分享一个项目写的读取文件夹中文件的VBA方法

**************************************************************************

1,创建一个用于存放读出来文件信息的用户类型【应该是深受面向对象的影响吧】

Type serchFileInfor
    fileCount As Integer
    fileNames() As String
    fileDirs() As String
    fileFullNames() As String
End Type

2,编写取得文件信息的方法

sPath:要检索的文件路径
sFileSpec:检索规则,比如说【*.*】是指检索全部文件,【*.txt】是检索所谓扩展名是txt的文件
serchFileInfor:文件保存的地方,因为下面用到了递归,参数所以,这个东西就传来传去了。

Public Sub FileTreeSearch(ByVal sPath As String, ByVal sFileSpec As String, _
        ByRef fileInfo As serchFileInfor)
    Dim sDir As String
    Dim sSubDirs() As String
    Dim iIndex As Long

    If Strings.Right(sPath, 1) <> "\" Then
        sPath = sPath & "\"
    End If

    sDir = Dir(sPath & sFileSpec)

    Do While Len(sDir)
        fileInfo.fileCount = fileInfo.fileCount + 1
        ReDim Preserve fileInfo.fileNames(1 To fileInfo.fileCount)
        ReDim Preserve fileInfo.fileDirs(1 To fileInfo.fileCount)
        ReDim Preserve fileInfo.fileFullNames(1 To fileInfo.fileCount)
        fileInfo.fileNames(fileInfo.fileCount) = sDir
        fileInfo.fileDirs(fileInfo.fileCount) = sPath
        fileInfo.fileFullNames(fileInfo.fileCount) = sPath & sDir

        sDir = Dir
    Loop

    iIndex = 0
    sDir = Dir(sPath & "*.*", vbDirectory)
    Do While Len(sDir)
        If Strings.Left(sDir, 1) <> "." Then 'skip.and..
            If GetAttr(sPath & sDir) And vbDirectory Then
                iIndex = iIndex + 1
                ReDim Preserve sSubDirs(1 To iIndex)
                sSubDirs(iIndex) = sPath & sDir & "\"
            End If
        End If
        sDir = Dir
    Loop
    For iIndex = 1 To iIndex
        FileTreeSearch(sSubDirs(iIndex), sFileSpec, fileInfo)
    Next iIndex
End Function

  

这样,要用到的信息都放到了【fileInfo】中了。

接下来要如何操作文件,都是接下来要做的事情了。

  

posted @ 2013-06-09 16:19  鸿鹰  阅读(1910)  评论(0编辑  收藏  举报