【问题标题】:Intermittent Excel Error when Opening/Saving Files打开/保存文件时出现间歇性 Excel 错误
【发布时间】:2017-11-20 21:18:21
【问题描述】:

很长一段时间以来,我们在通过 VBA 中的自动化保存/打开 excel 文件(并且只有 excel 文件)时会出现间歇性错误。这个错误是非常不可预测的,并且发生在我们自动化的不同部分,但它似乎发生在保存/打开各种文件(通常是随机临时文件)时。我们目前使用的是office 2010,我们的系统是最新的。

错误是:“‘FILENAME.filetype’无法访问。该文件可能已损坏,位于没有响应的服务器上,或者是只读的”。发生此错误的文件名始终不同(例如:'A1B2CDE3.tmp')。最常发生错误的文件似乎是 Windows 在保存工作簿时生成的随机命名的临时文件。

目前,我们取消了此消息框,并且自动化恢复正常,除非稍后在自动化中再次出现相同的错误。

经常出错的示例代码:

WorkbookName.Sheets("Sheet1").Cells.NumberFormat = "General"

***WorkbookName.SaveAs FileName:=MyDirectory & "\Filename.txt", FileFormat:=xlTextWindows***

WorkbookName.Close savechanges:=False

注意:上述代码的粗体 (***) 部分是最常发生错误的地方。上例中的.txt文件不会出现该错误,而是因为在保存txt文件时Windows生成了临时文件。

到目前为止,我们已经尝试了以下方法:

• 修改 VBA 代码(例如更改 saveas 文件类型和自动化以绕过错误消息)

• 确保文件不是只读的。

• 在客户端计算机上重新安装 office。

• 检查共享驱动器和所有文件/文件夹的权限是否正确设置。

• 删除某些客户端计算机上的最新 Office 更新以进行测试。

虽然错误发生在 excel 中,但我们认为这可能是服务器相关问题,基于我们阅读的其他论坛讨论,其他人遇到了类似问题。

现阶段欢迎提出任何想法,因为我们未能成功解决此问题。

【问题讨论】:

  • 这感觉就像是从代码外部强加给您的文件系统错误。当错误发生时,您如何处理错误,即您的例程中是否有特定的错误处理代码?要尝试的一件事是在延迟几秒钟后重试 SaveAs。令人沮丧的是,这些事情有时会自行解决。
  • 这通常是什么文件大小?如果很大,也许防病毒软件在这里起作用?或者如果它是一个网络驱动器,当它发生时交换机是否拥塞?您可以尝试将其保存到本地 Temp 文件夹,完成后,使用 FileSystemObject 移动文件。

标签: vba excel runtime-error temporary-files


【解决方案1】:

还有一些额外的错误信息可能有助于了解导致问题的原因。我假设您有错误处理,因此在您的错误处理程序中使用如下代码可能会提供您需要解决的信息(或为我们提供更多信息来为您解决它):

Dim errLoop As Error
For Each errLoop In Errors
    With errLoop
        Debug.Print "Error #" + CStr(.Number)
        Debug.Print "  " + .description
        Debug.Print "  (Source: " + .Source + ")" 
    End With
Next

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 2017-12-10
    相关资源
    最近更新 更多