Excel VBA,无法读取 SharePoint 上文件夹中的 Excel 文件

Excel VBA,无法读取 SharePoint 上文件夹中的 Excel 文件

有人能告诉我找不到路径是什么问题吗?当我执行脚本时,总是在同一个位置显示错误消息(运行时错误 76)。

 Sub GetData ()
Dim oMe As Worksheet, iLine As Long, oFile As Object
Dim oFS As Object, wbQuelle As Workbook
Set oMe = ThisWorkbook.ActiveSheet
Const sDateiPfad As String = "https:\\xxxx.sharepoint.com\sites\001073\xxxxxx\xxxxxx\Anmeldungen\" 'Path is changed because of data protection
iZeile = 19
Application.ScreenUpdating = False
Set oFS = CreateObject ("Scripting.FileSystemObject")
For Each oDatei In oFS.GetFolder (sDateiPfad). Files
If InStrRev (oDatei.name, "xlsx") Then
 Set wbQuelle = Workbooks.Open (sDateiPfad & oDatei.name)
 With wbQuelle.ActiveSheet
oMe.Cells (iZeile, 2) = .Range ("B5")
oMe.Cells (iZeile, 3) = .Range ("B13")
oMe.Cells (iZeile, 4) = .Range ("B14")
oMe.Cells (iZeile, 5) = .Range ("B15")
oMe.Cells (iZeile, 6) = .Range ("B16")
oMe.Cells (iZeile, 7) = .Range ("B17")
oMe.Cells (iZeile, 8) = .Range ("B22")
oMe.Cells (iZeile, 9) = .Range ("B28")
oMe.Cells (iZeile, 10) = .Range ("B29")
oMe.Cells (iZeile, 11) = .Range ("B36")
oMe.Cells (iZeile, 12) = .Range ("B24")
oMe.Cells (iZeile, 13) = .Range ("G30")
oMe.Cells (iZeile, 14) = .Range ("H53")
oMe.Cells (iZeile, 15) = .Range ("B30")
oMe.Cells (iZeile, 16) = .Range ("B31")
oMe.Cells (iZeile, 17) = .Range ("G26")
oMe.Hyperlinks.Add Anchor:=oMe.Cells (iZeile, 29), Address:=sDateiPfad_
& wbQuelle.name, TextToDisplay:=wbQuelle.name
wbQuelle.Close False
iZeile = iZeile + 1
End With
End If
Next
Set oMe = Nothing: Set wbQuelle = Nothing
End Sub

答案1

使用 Excel 时,SharePoint(和 OneDrive)路径+文件名不能超过 400 个字符。因此,如果宏使用的实际路径+文件名更长,则可以说什么都无法提供。

有几个因素会影响文件命名和路径长度,在某些情况下,您可以使用多达 32767 个字符,但您需要为此对 Windows 进行更改(这很容易)。它不能保证任何特定程序(Excel、SharePoint 等)可以MAX_PATH完全使用新长度,或者完全使用。对于大多数程序使用的 Windows API32 也是如此。用于许多事情的 Windows Shell 也用于限制一个。即便如此,像 Excel 这样的程序,期望环境将其限制为 260 个字符(255 个“真实”字节和一些“假”字节),可能会有强制执行该限制的代码,因此即使它实际上可以使用更长的限制(如果编码如此),嗯,它还没有更新,所以...

\\?\方法可以用于很多事情,但无法克服程序拒绝考虑使用它发送的命名数据的问题。它可能使某些东西可寻址,并为程序员提供其他优势,但它无法让一个被编码为不使用比“任何长度”更长的路径+文件名的程序开始使用更长的路径+文件名。SharePoint 就是一个例子。

另外还有一些其他奇怪的情况。

但是您的特殊情况很可能(因为上面没有显示实际路径)遇到 SharePoint 的 400 个字符的限制,因此它无法使用发送给它的命名数据。

相关内容