我有一个Access 2003 DB,它有一个VBA模块。模块功能指向Excel文件。
该函数通过命令行调用Excel文件,如下所示:
Shell "Excel \\server\dir\filename.xls", vbMaximizedFocus
数据库打开,函数被触发,我得到Run-timer error '53': File not found
我知道Excel文件存在,我可以打开它。我具有安全权限,可以访问文件路径中的文件夹。
我已尝试过的内容:
反编译+压缩+重新编译数据库,using the instructions here.
我仍然遇到同样的错误。任何人都可以提出其他原因/解决方案吗?
次要编辑 - 内容保持不变。
答案 0 :(得分:1)
请参阅映射的网络驱动器(letter)。检查您的即时窗口:
?dir("N:/dir\filename.xls")
您还可以按如下方式打开工作簿(如果您需要更多灵活性):
Dim oExcel As Excel.Application
Set oExcel = CreateObject("Excel.Application")
oExcel.visible = true
oExcel.Workbooks.Open ("\\server\dir\filename.xls")
oExcel.Quit 'close
答案 1 :(得分:1)
我无法重现文件未找到错误。我按如下方式调整了您的代码,但它会毫无错误地打开工作簿文件。
Const cstrFile = "\\HP64\share\Access\temp.xls"
If Len(Dir(cstrFile)) = 0 Then
MsgBox "File '" & cstrFile & "' not found."
Else
Shell "Excel " & cstrFile, vbMaximizedFocus
End If
或者,您可以创建Excel应用程序实例,然后打开该文件。但是我怀疑这是否会避免找不到错误。
Dim objExcel As Object 'Excel.Application
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Open cstrFile
' do stuff here
objExcel.Quit
Set objExcel = Nothing