SharePoint迁移后Excel宏处理带参文件报Error 52问题
问题原因
- Error 52报错的核心原因是
FileDateTime是Windows文件系统接口的函数,仅支持标准本地路径/UNC路径格式,你在路径末尾附加的?d=xxx属于HTTP请求的查询参数,不属于文件系统可识别的文件名/路径组成部分,因此系统判定路径非法抛出错误。 - 次要原因:SharePoint 2016升级后站点改为HTTPS协议,原有UNC路径格式可能不匹配HTTPS站点的WebDAV访问规则。
修复方案
方案1:直接从已打开的工作簿对象提取时间(最稳妥)
你代码中已经通过Workbooks.Open打开过目标文件,完全可以在关闭文件前直接从工作簿对象读取修改时间,不需要后续再通过UNC路径二次查询,完全规避路径格式问题:
Sub ACQUIRE_LATEST_DATA() Dim myBook As Workbook, RawRep As Workbook Dim RawTab As Worksheet Dim fdate As String Set myBook = Excel.ActiveWorkbook Set RawTab = myBook.Sheets("RawReport") Set ListsTab = myBook.Sheets("Lists") 'New Path Set RawRep = Workbooks.Open("https://restricted.[pathToSharePointSite]/Starters/NewStarterMasterReport.csv?d=w215fc66a166c403587b89b26912a7613") ' 新增行:打开文件时直接存储修改时间 fdate = RawRep.BuiltinDocumentProperties("Last Save Time").Value RawTab.Cells.Clear With RawRep.Sheets("NewStarterMasterReport").UsedRange RawTab.Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value End With RawRep.Close With RawTab.Range("A1:AO1") .Interior.Color = ListsTab.Cells(1, 3).Interior.Color .WrapText = ListsTab.Cells(1, 3).WrapText .Font.Bold = ListsTab.Cells(1, 3).Font.Bold .Font.Color = ListsTab.Cells(1, 3).Font.Color End With RawTab.Cells.RemoveDuplicates (12) ' 注释掉原报错的FileDateTime调用即可 'fdate = FileDateTime("\\restricted.[pathToSharePointSite]\Starters\NewStarterMasterReport.csv?d=w215fc66a166c403587b89b26912a7613") ListsTab.Cells(2, 4).Value = fdate End Sub
方案2:修正UNC路径格式
如果你坚持要用FileDateTime查询,调整路径规则即可:
- 删掉路径末尾的HTTP查询参数
?d=w215fc66a166c403587b89b26912a7613 - HTTPS协议的SharePoint站点UNC路径需要补充
@SSL\DavWWWRoot标识,最终路径格式如下:
fdate = FileDateTime("\\restricted.[pathToSharePointSite]@SSL\DavWWWRoot\Starters\NewStarterMasterReport.csv")
注意使用该方案需要确保本地设备的WebClient服务处于运行状态,否则UNC访问SharePoint HTTPS站点会失败
内容的提问来源于stack exchange,提问作者undeadDog
相关产品推荐
相关产品推荐

