访问VBA FSO.FileExists命令在一台计算机上的ACCDE中失败,在另一台计算机上工作

时间:2017-02-06 21:25:46

标签: vba ms-access ms-access-2007

我正在编写一个MS Access VBA应用程序并且遇到令人难以置信的错误。我有一台安装了MS-Access 2007的开发机器,以及安装了Access 2007运行时的最终用户机器。我正在编写应用程序以编译成ACCDE并在最终用户计算机上运行。

我有一个文件,我需要以编程方式创建一个链接,因为该位置总是根据序列号更改。我已经编写了代码来执行此操作,它可以在dev机器上查找ACCDB和ACCDE文件。但是,当我在最终用户计算机上运行ACCDE时,我确定文件是否存在的方法会引发错误,导致if语句失败,因此文件永远不会打开。我的代码(带有一些调试代码)如下:

Sub Import(FileType As String, FileLocation As String)

10 On Error GoTo PROC_ERR

20 Dim db As DAO.Database
Dim fso As FileSystemObject

Set fso = New Scripting.FileSystemObject

' Re-link the CSV Table
30 Set db = CurrentDb

50 db.TableDefs.Refresh

60 Dim teststr As String, testloc As String

70 teststr = FileLocation & "\" & FileType & ".csv"

MsgBox teststr
testloc = "N:\Data\111\111_01\result\result.csv"

80 If fso.FileExists(teststr) Then
       MsgBox "TEST"
90     DoCmd.TransferText acLinkDelim, , "dataTbl", testloc, True
100    db.TableDefs.Refresh
    'DoCmd.RunCommand acCmdWindowHide                
110 Else
120     MsgBox ("Results File does not exist.")
    Exit Sub
140 End If
170 db.Close:   Set db = Nothing

PROC_ERR:
180     MsgBox "Error Line: " & Erl & vbCrLf & _
            "Error: (" & Err.Number & ") " & Err.Description, cbCritical
End Sub

文件位置=“N:\ Data \ 111 \ 111_01 \结果,其中N是映射的网络驱动器(两台计算机上的驱动器号相同)

文件类型=“结果”

我无法弄清楚为什么fso.FileExists只出现在一台计算机上的ACCDE上。我用DIR命令尝试了类似的检查,同样得到了“错误52”。

如果我用testloc替换teststr(这样路径是硬编码的)它可以在所有机器上正常工作,但如果我比较teststr和testloc的值它们是相同的。

我的智慧结束了。有什么想法吗?

0 个答案:

没有答案