在调用SHELL之前,必须要通过以下步骤:(以在E:盘根目录下操作为例)
1、强制改变当前的驱动器: ChDrive "E"
2、强制改变默认的工作目录:chdir "E:/"
完成以上动作之后,再来调用E:/的批处理文件:shell "e:/234.bat"
这样执行的效果就和DOS下执行的效果一致。
原因在哪?这是因为SHELL的工作切入点是在Application的默认工作目录中,也就是说,除非在批处理中强行界定目标路径,否则,SHELL执行批处理时永远都是Application的默认工作目录下进行。
而Application的默认工作目录一般都是“我的文档”。你可以这样试验一下,在E:/创建一个批处理234.bat,内容是 dir >123.inf ,就是将dir列表写进到123.inf文件中,然后在立即窗口中shell "E:/234.bat" ,之后再用windows的搜索功能,搜索一下刚刚生成的123.inf文件,你就会发现这个文件是在“我的文档”中,而不是在E:/下,而在DOS下直接执行234.bat,则结果文件就自然在E:/下。
如果是在立即窗口中,依次执行
ChDrive "E"
chdir "E:/"
shell "e:/234.bat"
你再看一下,生成的文件就在E:/下了。
Option Explicit
'version 0.1 2009/08/05 add Attached_SaveAs
Sub Attached_SaveAs()
'执行前,在工具,引用中加入"Microsoft Scripting Runtime"
Dim fso As New FileSystemObject
Dim fldr As Folder
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists("d:/GDS_HUB_Report_Used_by_Rita") Then '判断是否存在这个文件夹
fso