【问题标题】:Alternate message when VBA can't open fileVBA 无法打开文件时的备用消息
【发布时间】:2014-02-24 11:20:55
【问题描述】:

我有一个 VBA 脚本,当用户执行它时,它会打开新数据并将新数据写入网络共享驱动器上的另一个文件。有时脚本无法访问此文件以将新数据写入其中,因为其他人同时尝试打开它(通过他们拥有的 VBA 脚本只读)。

这个特定的文件打开错误不会被错误处理代码捕获,并且会出现一个框并要求用户结束或调试。有没有办法弹出一个备用弹出框,上面写着“无法处理请求。请等待几秒钟,然后重试。”

【问题讨论】:

  • THIS 将帮助您入门。
  • 是的。显示一些我们可以提供帮助的代码。
  • 问题不在于它已经打开。当它试图由两个不同的人同时打开时。发生碰撞。
  • Sids 建议会起作用,因为不能同时打开 2 个文件。物理上不可能。 2 个用户并排坐着,1 个用户有 2 只鼠标,就是做不到。一个用户不可避免地会先打开文件,然后另一个用户会收到文件已打开的错误。话虽如此,也许我对你感觉更好。任你选

标签: excel error-handling vba


【解决方案1】:

是的。围绕文件打开代码进行错误处理。像这样:

on error goto FileError
    'file opening code
on error goto 0


exit sub
FileError:
    msgbox("Could not process request. Please wait a few seconds and try again")

基本上,OnError 告诉该语句之后的所有内容在发生错误时执行您指定的任何操作。在这种情况下,我输入了goto FileError,因此如果在onError 处理之后的任何地方遇到错误,将停止并转到标记为FileError 的行。

然后OnError goto 0 禁用该错误句柄。这样,如果其他代码生成错误,FileError 句柄将不会处理它。 onerror 的另一个选项是OnError Resume Next,它使程序跳过产生错误的代码。所以它不会抛出错误,它会继续处理。

注意:Exit SubFileError 标签之前,这样代码不会进入 FileError 标签,除非它是由生成的错误发送到那里的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 2017-09-18
    相关资源
    最近更新 更多