【问题标题】:How to copy specific files from subfolders to a destination folder? (Excel VBA)如何将特定文件从子文件夹复制到目标文件夹? (Excel VBA)
【发布时间】:2017-11-11 03:22:04
【问题描述】:

我是 VBA 的新手,非常感谢您对这个程序的任何帮助!

此程序的目标是将所有特定文件类型 (.pdf) 从网络复制到桌面上的文件夹。但是,(.pdf) 文件位于每个文件夹的子文件夹中。

如果我让用户定义文件夹(带有许多子文件夹),我希望程序将每个子文件夹中的每个 .pdf 复制到目标文件夹中。

这是我到目前为止浏览互联网所得到的。

Sub Copy_test2()
Dim FSO As Object, fld As Object
Dim fsoFile As Object
Dim fsoFol As Object

    FromPath = "D:\Users\A\Desktop\test1" 'user will define this
    ToPath = "D:\Users\A\Desktop\test2"   'this will be the folder on the desktop

    If Right(FromPath, 1) <> "\" Then
        FromPath = FromPath & "\"
    End If

Set FSO = CreateObject(“Scripting.FileSystemObject”)

Set fld = FSO.GetFolder(FromPath)

If FSO.FolderExists(fld) Then
    For Each fsoFol In FSO.GetFolder(FromPath).subfolders
        For Each fsoFile In fsoFol.Files
            If Right(fsoFile, 3) = “pdf” Then
                fsoFile.Copy ToPath
            End If
        Next
    Next
End If

End Sub

当我运行它时,我得到:运行时错误 '424' Object Required for

Set FSO = CreateObject(“Scripting.FileSystemObject”)

我是否以正确的方式处理此代码?还是有其他方法可以完成这项任务?

谢谢!

【问题讨论】:

    标签: excel for-loop fso vba


    【解决方案1】:

    始终以Option Explicit 开头您的模块。这迫使您声明所有变量,这是一件好事。

    然后,始终在运行代码之前对其进行编译。这可以通过调试菜单 -> 编译来完成。在您的情况下,编译将失败,因为未声明几个字符串变量(除非它们在模块级别声明),并且因为您使用的双引号不是“,即“和”。看到区别了吗? VBA 不喜欢它们 :-)

    【讨论】:

    • 感谢您的建议!我会尝试调试这个。
    猜你喜欢
    • 1970-01-01
    • 2016-06-14
    • 2016-10-23
    • 1970-01-01
    • 2016-03-03
    • 2017-03-31
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多