如何解决对象“ _Workbook”的方法“另存为”失败
我有一个宏,它在“下载”文件夹中打开一组Excel文件,将数据设置为表格格式,然后将其保存到Sharepoint的在线位置。今天,宏突然失去作用了(大约一个月没有问题的使用),在行wb.SaveAs...
上给出了错误,错误消息是Run-time error '1004': Method 'SaveAs' of object '_Workbook' failed
。我绝对无法找出导致错误的原因:
-
wb
变量中填充了正确的工作簿引用 - 目标网址有效且存在
- 名称不包含任何无效字符
- 我可以访问有问题的网址(实际上,宏位于同一位置的文件中)
- 该位置没有同名文件
- 当我
debug.print
Filename参数并手动保存在该位置/名称时,它可以工作
关于Stack上此错误的问题有十亿个,但是大多数问题似乎与ActiveSheet对象的问题有关,但是我有一个具体的硬性参考,因此所提供的解决方案并不真正适用。
Sub DataPrep()
Dim wbTgt As Workbook: Set wbTgt = ThisWorkbook
Dim wb As Workbook
Dim sSrcPath As String: sSrcPath = Environ("UserProfile") & "\Downloads\"
Dim sTgtPath As String: sTgtPath = "https://evilcorpportal.sharepoint.com/sites/folder1/folder2/folder3/folder4/folder5/"
Dim sDate As String: sDate = Year(Date) & "-" & Format(Month(Date),"00") & "-" & Format(Day(Date),"00")
Dim sWBs() As String: sWBs = Split("Rep1 " & sDate & ";Rep2 " & sDate & ";Rep3 " & sDate & ";Report4",";")
Dim sWBLocs() As String: sWBLocs = GetFileLocations(sSrcPath,sWBs)
Dim sTblName As String
Dim i As Integer
For i = LBound(sWBLocs) To UBound(sWBLocs)
Set wb = Workbooks.Open(sWBLocs(i))
sTblName = Split(wb.Name,".")(0)
If InStr(sTblName," ") > 0 Then sTblName = Left(sTblName,InStr(sTblName," ") - 1)
Call CreateTable(wb,sTblName)
Call wb.SaveAs(Filename:=sTgtPath & sTblName & ".xlsx",FileFormat:=51)
wb.Close
Next i
End Sub
解决方法
因此问题不在代码中,而在Sharepoint上的某个地方。当我尝试手动执行此步骤时,它仅在大约25%的情况下有效(当在提出问题之前进行测试时,我很幸运),否则在上传过程中(在保存到在线位置或保存过程中)失败离线并手动上传)。我认为在宏执行过程中也会发生同样的情况,并使其失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。