我正在尝试使用CopyFolder方法将PDF文件从映射的远程目录复制到我的本地计算机。我得到了一个‘权限被拒绝’的错误,我相信它可能是试图复制隐藏或系统文件。我想保留从源文件夹结构,只需要PDF。有没有办法用CopyFolder来做到这一点,或者我应该改用像robocopy这样的外壳命令呢?
到目前为止,我的代码如下:
Public Sub DownloadFiles(FSOFolder As Object)
Dim MyFSO As FileSystemObject
Set MyFSO = New Scripting.FileSystemObject
Dim FSOSubFolder As Object
Dim FSOFile As Object
MyFSO.CopyFolder FSOFolder.path & "*", "C:\Users\UserName\Desktop\Temp"
'code continues文件夹已创建,但在尝试复制第一个文件时似乎出错。感谢大家的建议。
发布于 2020-10-21 22:52:47
您可以尝试使用错误处理单独复制文件,以忽略您无权复制的文件。在这种方法下,您将需要手动创建文件夹。
下面是展示这一概念的示例代码。我没有测试它。
Sub CopyFiles()
Dim FSO as FileSystemObject
Dim DestinationFolder as Folder
Dim CopyFolder as Folder
Set FSO = New FileSystemObject
Set DestinationFolder = FSO.GetFolder("Your Path to Copy To")
Set CopyFolder = FSO.GetFolder("Your Path to Copy From")
Call Recurse(CopyFolder, DestinationFolder)
End Sub
Sub Recurse(CopyFolder as Folder, DesintationFolder as Folder)
Dim SubFolder as Folder
Dim File as File
On Error Resume Next
For Each File in CopyFolder.Files
FSO.CopyFile(File.Path, DestinationFolder.Path & "\")
Next File
On Error GoTo 0
For Each SubFolder in CopyFolder.Subfolders
Call Recurse(SubFolder, FSO.CreateFolder(DestinationFolder.Path & "\" & SubFolder.Name))
Next SubFolder
End Sub如果您对此有任何问题,请告诉我。
https://stackoverflow.com/questions/64465464
复制相似问题