通过显示“获取可用内容类型和属性列表......”的屏幕,VBA将Excel保存到Sharepoint将永久冻结

时间:2016-11-10 18:37:20

标签: excel vba excel-vba sharepoint

我有VBA,以及许多其他东西,将Excel工作簿保存到SharePoint(我认为是企业2010),并且它在大多数情况下工作正常,但每当用户运行VBA时, Excel通过弹出显示"获取可用内容类型和属性的列表来冻结..."。如果用户选择取消,则会出现另一个弹出窗口"运行时错误' 1004':方法' SaveAs'对象' _Workbook'失败。如果用户选择' Debug' VBA的最后一行突出显示为创建错误。

Dim fileName As String
Dim excelDirName As String

fileName = [c9]
excelDirName = [c16] & "/"

ThisWorkbook.SaveAs excelDirName & fileName & ".xls"

因为这有时会起作用(并且在没有这种情况下工作超过6个月)而不是其他时间我不确定它可能是什么,我想在SharePoint中更新了一些内容。

1 个答案:

答案 0 :(得分:1)

我会用不同的方式写它,以使它更健壮:

With SomeSpecificSheet

    Dim path As String
    path = .Range("SavePath").Value

    Dim fileName As String
    fileName = .Range("SaveFileName").Value

End With

Debug.Assert Trim(path) <> vbNullString
Debug.Assert Trim(fileName) <> vbNullString

Dim savePath As String
savePath = path & "/" & fileName

ThisWorkbook.SaveAs savePath

注意:

  • 明确说明您正在阅读的工作表 - 您当前正在阅读活动工作表中的任何内容,除非ThisWorkbook中的每个工作表都包含$C$9和{{}中的预期值1}},那是在惹麻烦。
  • 使用named ranges,这样如果用户在列C之前插入一列或在第9行之前插入一行,您的代码仍会引用正确的单元格。
  • $C$16确定文件的扩展名。
  • 使用SaveAs验证假设(并在冻结之前中断)。或者,您可以显式验证值,例如:

    Debug.Assert