登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

凌晨阳光

 
 
 

日志

 
 

VBA中调用SHELL心得。  

2010-08-21 10:49:38|  分类: Excel自动化 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在VBA中,有人可能会用到SHELL来调用外部批处理文件。
在实践过程中,往往SHELL调用批处理的结果与DOS下执行的效果不一样。这是什么原因呢?
老朽多年实践的经验告诉我,在使用SHELL调用DOS批处理时,必须在代码中做好预处理:
在调用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:\下了。
  评论这张
 
阅读(2891)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018