我正在编写一个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的值它们是相同的。
我的智慧结束了。有什么想法吗?