如何在通过网络复制文件时处理错误
问题描述:
我正在回收旧数据库中的代码。如何在通过网络复制文件时处理错误
对于一个人,位于全国各地的一半,我相信可能有一些连接问题。
Public Function BackUpBackend()
Dim Source As String
Dim Target As String
Dim retval As Integer
Source = "\\network\backend\accessfile.accdb"
Target = "\\network\backend\backup\"
Target = Target & Format(Date, "mm-dd") & "@"
Target = Target & Format(Time, "hh-mm") & ".accdb"
retval = 0
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
retval = objFSO.CopyFile(Source, Target, True)
Set objFSO = Nothing
End Function
有没有什么办法可以检测这段代码中的连接错误?如果有,连接是否可以重新建立,或只是在问题出现时一起停止备份过程?
答
在VBA中,你可以做
On Error Resume Next
将继续过去的错误。这可能是危险的,所以它往往是最好尽快在发生错误时处理转换尽可能与
On Error Goto 0
您可以自定义处理程序的错误,茬了,你要采取具体行动: 从VBA Reference:
Sub InitializeMatrix(Var1, Var2, Var3, Var4)
On Error GoTo ErrorHandler
. . .
Exit Sub
ErrorHandler:
. . .
Resume Next
End Sub
所以,你可能做这样的事情:(我没有测试)
Public Function BackUpBackend()
Dim Source As String
Dim Target As String
Dim retval As Integer
Source = "\\network\backend\accessfile.accdb"
Target = "\\network\backend\backup\"
Target = Target & Format(Date, "mm-dd") & "@"
Target = Target & Format(Time, "hh-mm") & ".accdb"
retval = 0
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
On Error Goto ErrorHandler
retval = objFSO.CopyFile(Source, Target, True)
Set objFSO = Nothing
On Error Goto 0
Exit Function
ErrorHandler:
MsgBox("Backup failed. If this happens often contact IT", vbExclamation)
End Function
如果远程工作站具有共享驱动器再复制一个大f然后读回共享驱动器。检查文件传输的速度,并检查在往返之后是否有损坏...然后在远程工作站上使用accessfile.accdb在工作站上运行代码...可能会显示一些内容 – jsotola