首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到文件路径时如何退出子程序?

找不到文件路径时如何退出子程序?
EN

Stack Overflow用户
提问于 2019-05-21 11:58:39
回答 2查看 250关注 0票数 0

我试着通过阅读你的论坛来教育自己一段时间关于VBA的知识,并希望你现在能帮我解决一个我找不到的错误。

我试图在关闭时保存一个工作簿。该文件路径是一个映射驱动器,但是,没有该驱动器的访问权限的人可能会使用该文件。因此,当找不到文件路径并退出该文件时,我希望宏什么也不做。这就是我获得运行时错误的地方。有什么建议吗?

代码:

代码语言:javascript
复制
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Dim OrigName As String
    Dim FolderPath As String

    OrigName = ActiveWorkbook.FullName
    FolderPath = "\\MappedDrive\Folder1\Folder2\"

    If Dir(FolderPath, vbDirectory) <> vbNullString Then
        ActiveWorkbook.SaveAs FolderPath + ActiveWorkbook.Name
        ActiveWorkbook.SaveAs OrigName

    Else
        Exit Sub
    End If

End Sub

当连接到驱动器时,代码运行良好,但一旦断开连接,我将得到以下行的错误消息:

代码语言:javascript
复制
If Dir(FolderPath, vbDirectory) <> vbNullString Then

消息:运行时错误52:错误文件名我们的编号

如前所述,如果找不到文件路径,我希望代码中止并关闭工作簿,就像不存在宏一样。

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-21 14:19:59

可以尝试使用错误处理:

代码语言:javascript
复制
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Dim OrigName As String
    Dim FolderPath As String

    OrigName = ActiveWorkbook.FullName
    FolderPath = "\\MappedDrive\Folder1\Folder2\"
    on error goto finish
    ActiveWorkbook.SaveAs FolderPath + ActiveWorkbook.Name
    ActiveWorkbook.SaveAs OrigName
    on error goto 0
    ' continue code here if you need to do more

finish:
    ' you can add code here that will be performed if the error occurs

End Sub
票数 0
EN

Stack Overflow用户

发布于 2019-05-21 14:23:35

这是不存在的驱动器的预期功能 of Dir

代码语言:javascript
复制
Debug.Print Dir("\\ValidDrive\ValidFolder", vbDirectory)
'Result: "ValidFolder"

Debug.Print Dir("\\ValidDrive\InValidFolder", vbDirectory)
'Result: ""

Debug.Print Dir("\\InValidDrive\InValidFolder", vbDirectory)
'Result: Runtime Error 52: Bad File Name our Number 

要么使用FileSystemObject,要么使用On Error来捕捉这些情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56237820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档