循环遍历文件夹(VBA)中的各种文件

时间:2016-12-23 17:30:20

标签: excel vba ms-access

我有一个关于循环浏览两种不同文件的文件夹的问题:xlsm和mdb(Access)。

我目前编写了一个宏,在将一些数据从xlsm复制到mdb文件然后保存mdb文件之前,将打开1个单个xlsm文件和1个单个mdb文件。

现在,我希望这个过程重复一个包含50个xlsm文件和50个mdb文件的文件夹。它们具有相同的名称,因此例如循环应该这样做:

  1. 打开名为“2001”的xlsm和mdb文件。
  2. 从xlsm到mdb执行复制和粘贴等(我写过这部分)。
  3. 保存mdb文件。
  4. 关闭名为“2001”的xlsm和mdb文件。
  5. 在文件夹中对“2002”,“2003”等重复步骤1-4。
  6. 我是VBA的新手,非常感谢!期待任何指导。圣诞快乐!

1 个答案:

答案 0 :(得分:2)

我今天刚刚做了用于在文件夹中列出JPG文件的示例代码,您可以采用和修改以完成您喜欢的操作,但是如果没有能够看到您的解决方案,则很难为您提供准确的代码。 / p>

Public Sub listImages(folderPath As String)

    'define variables
    Dim fso As Object
    Dim objFolder As Object
    Dim objFolders As Object
    Dim objF As Object
    Dim objFile As Object
    Dim objFiles As Object
    Dim strFileName As String
    Dim strFilePath As String
    Dim myList As String

    'set file system object
    Set fso = CreateObject("Scripting.FileSystemObject")

    'set folder object
    Set objFolder = fso.GetFolder(folderPath)

    'set files
    Set objFiles = objFolder.files
    Set objFolders = objFolder.subfolders

    'list all images in folder
    For Each objFile In objFiles

        If Right(objFile.Name, 4) = ".jpg" Then
            strFileName = objFile.Name
            strFilePath = objFile.Path
            myList = myList & strFileName & " - " & strFilePath & vbNewLine
        End If

    Next

    'go through all subflders
    For Each objF In objFolders
        Call listImages(objF.Path)
    Next

    Debug.Print myList

    Set objFolder = Nothing
    Set objFile = Nothing
    Set fso = Nothing


End Sub