Excel VBA:获取networkingpath上的文件状态不一致

我试图修复一个Excel VBAmacros中的间歇性错误,我已经归结为由于Excel在networking驱动器上的文件上运行打开命令时返回不一致的错误代码。

下面的GEN_File_Status函数返回一个整数代码,其他代码用来确定文件的状态(作为fNameparameter passing)。 一些错误代码(例如52和53)导致返回相同的值,因为我的调用代码不需要区分这些代码。 预期fName将包含完整的文件path和文件名。

Public Function GEN_File_Status(ByVal fName As String) As Integer Dim fileInd As Long On Error GoTo errHandle fileInd = FreeFile() Open fName For Input Lock Read As #fileInd Close fileInd On Error GoTo 0 GEN_File_Status = 0 ' File exists and is unopened Exit Function errHandle: Select Case Err.Number Case 52 ' Bad filename or number GEN_File_Status = -1 Case 53 ' File not found GEN_File_Status = -1 Case 70 ' Permission denied (file may already be open) GEN_File_Status = 1 Case 76 ' Path not found GEN_File_Status = -2 Case Else ' Unknown error code GEN_File_Status = -2 End Select End Function 

这工作正常,如果我在本地驱动器上运行,但是当我在networking驱动器上运行时,我偶尔会在调用代码中显然由于Excel放弃太快,以确定文件path不存在,或是否无法通过networking来确定。 这个失败并不要求networking在“人”标准下变得缓慢 – 基于代码执行时间,Excel必须相当快地放弃。

为了排除故障,我故意在fName参数的networking上使用了一个无效的path,以查看Excel将返回的错误代码。 果然,我得到Err.Number = 76(path没有find)大部分时间,但也得到Err.Number = 53(文件未find)的一些时间以及这导致了我的问题调用代码。 显然这两个错误代码在某种意义上都是正确的,但是如果我在本地C盘上使用了一个无效的path,我会一直得到'76'错误代码。 所以很明显,“path未find”76错误优先,我需要一种方法来一致确定这一点。

有什么办法来告诉Excel或多或less“放慢速度,并得到错误代码”? 我试图插入DoEvents之前,至less让处理器运行最佳,但这并没有帮助,所以它似乎是一个networking问题。 最终,使用这种或其他方法,我需要一种方法来在networking驱动器上的以下情况之间始终如一地分离:

  1. 文件已经存在

  2. 文件不存在,但文件path存在

  3. 文件path不存在

任何帮助将不胜感激,谢谢。