我一直在阅读您的论坛,试图在VBA上进行自我教育,希望您现在能为我提供解决找不到的错误的帮助。
我正在尝试在关闭时保存工作簿。该文件路径是一个映射的驱动器,但是,该文件可能被没有该驱动器访问权限的人们使用。因此,我希望在找不到文件路径时宏不执行任何操作,而直接退出文件。这是我得到运行时错误的地方。有什么建议吗?
代码:
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
该代码在连接到驱动器时工作正常,但是一旦断开连接,我会收到以下行的错误消息:
If Dir(FolderPath, vbDirectory) <> vbNullString Then
消息:运行时错误52:文件名错误,我们的电话号码
如前所述,如果找不到文件路径,我希望代码中止并关闭工作簿,就像没有宏存在一样。
谢谢!
答案 0 :(得分:0)
可以尝试使用错误处理:
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
答案 1 :(得分:0)
这是Dir
中不存在的驱动器的预期功能:
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
来捕获这些情况。