VBA 将 Sharepoint 驱动器映射到文件资源管理器以循环访问 PDFS

VBA Mapping Sharepoint Drive to File Explorer To Loop Through PDFS

我在 excel 中有一个脚本需要遍历 Sharepoint 上的任何文件夹,并将其附加到电子邮件中。

据我所知,我需要一个目录,DIR 不能在 Sharepoint 上工作,所以我将文件所在的文件夹映射为计算机的 Z 网络驱动器,然后从那里循环。

但是,如果 Z 驱动器已经存在,因为我之前 运行 这个,我需要删除它,有时会抛出“此网络连接已打开文件或请求待处理”的错误,我无法删除它,并且必须再次 运行 脚本,它通常有效

这是我的代码:

'Create Directory to find PDF
On Error GoTo mapped:
networkPath.mapnetworkdrive "Z:", ThisWorkbook.path
mapped:
Application.Wait Now + #12:00:10 AM#
networkPath.RemoveNetworkDrive "Z:"
networkPath.mapnetworkdrive "Z:", ThisWorkbook.path
file_name = Dir("Z:\*.PDF")

'Find the PDFs
Do While Len(file_name) > 0
    If Right(file_name, 3) = "pdf" Then
        pdf_name = file_name
        GoTo foundpdf
    Else
    End If
Loop

是否有更好的方法来遍历共享点上的所有 PDF,然后一遍又一遍地映射 Z 驱动器,或者是否有更好的方法来克服已经存在的 Z 驱动器?

Dir会锁定文件直到Windows释放它,所以当你需要修改网络时不要使用它。相反,您可以这样做

Dim fso As Object
Dim file As Object
Set fso = CreateObject("scripting.filesystemobject")
For Each file In fso.getfolder("Z:\").files
    If Split(file, ".")(UBound(Split(file, "."))) = "xlsx" Then
        pdf_name = file_name
        GoTo foundpdf
    End If
Next file