【发布时间】:2018-01-22 21:22:02
【问题描述】:
我有一个 Excel 文件 (file1),其中的宏包含以下行:
Shell "wscript " & SFilename, vbNormalFocus
其中“SFilename”是 vbs 文件的名称。
在vbs文件中有一行:
appAccess.DoCmd.RunSavedImportExport ("ImportMonthlyData")
在这一行之上有几行,如:
appAccess.DoCmd.OpenQuery ("Insert Detail")
并且在 Excel 文件 2 上的 vbs 中进行了大量的 Excel 工作(与包含 wscript 宏的文件不同。
当我在文件资源管理器中双击 vbs 运行 vbs 文件时,一切正常。
当我通过宏从 Excel 文件 1 中运行宏时,vbs 在 ImportExport 行上失败。失败之处在于无法将要从中导入导出的 Excel 中的工作表归档,并且错误消息中显示的工作表名称末尾带有“$”。我不知道“$”是否是 Access 一直在做的事情,因为它在我使用文件资源管理器时有效,或者是否因为其他原因而添加了“$”。但是,我的猜测是这不是问题。
我认为问题的出现是因为 ImportExport 试图在 Excel 文件 1 而不是文件 2 中查找工作表。
你怎么看?如果这是问题所在,我该如何解决?
【问题讨论】:
-
如果(在
Shell之前)您将当前目录更改为包含vbs 文件的目录,它是否有效? -
使用
SFilename的完整路径,而不仅仅是文件名。同样适用于代码中您依赖当前目录的其他任何地方可能不是... -
我知道不清楚,因为我没有显示 SFilename 的定义,但它确实包含完整路径。在 .vbs 文件中,完整路径也使用 chdir 设置。我正在研究它正在查看 file1 而不是 file2 的理论(两者都在同一个文件夹中)。希望我明天能够继续这个项目。
标签: vba excel vbscript openquery