在VBA中如何调用VBS脚本

神之泪花 2012-04-18 04:37:50
最近在学习VBA,遇到一个问题
我想在VBA中调用已经写好的VBS脚本,VBA代码如下:
Sub Macro1()
Shell "C:\windows\system32\cmd.exe"
Shell "cd C:\temp"
Shell "cscript test.vbs"

End Sub

上面的command命令在cmd中可以正常执行,但是在VBA中执行到Shell "cd C:\temp"这句就报错了
提示File not found错误

麻烦有这方面经验的朋友帮忙看一下问题出在哪里,如果有其他方法直接调用也欢迎您说说思路

谢谢
...全文
1937 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dianyancao 2012-04-19
  • 打赏
  • 举报
回复
Shell "cscript C:\temp\test.vbs" '不在环境变量%Path%的路径,要用完整路径。

'也可以新建一个批处理文件,然后再直接调用该批处理
Dim tempString As String

tempString = "cd C:\temp" & vbCrLf & "cscript test.vbs"

If Dir("c:\temp\") = "" Then MkDir "c:\temp"
Open "C:\temp\vbs.bat" For Output As #1
Print #1, tempString
Close #1

Shell "c:\temp\vbs.bat"
  • 打赏
  • 举报
回复
应该是把CD当作命令行了……
神之泪花 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
Shell 命令是在当前目录下执行的,所以可以这样:

VB code

ChDrive "C:"
ChDir "C:\Temp"
Shell "cscript test.vbs"
[/Quote]

这样操作也是可以实现的,测试通过
重点在于【Shell 命令是在当前目录下执行的】
感谢您的回答
神之泪花 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
Sub Macro1()
Shell "C:\windows\system32\cmd.exe /K cd c:\&cd c:\temp&cscript test.vbs"
End Sub


cmd一行多命令,中间用&隔开。


不知道这样行不行
[/Quote]

起初我也试过一行多命令的,就是卡在了cd这块
你提供的source测试通过了,重点就在于&符
多谢了
神之泪花 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
Shell "cscript C:\temp\test.vbs" '不在环境变量%Path%的路径,要用完整路径。

'也可以新建一个批处理文件,然后再直接调用该批处理
Dim tempString As String

tempString = "cd C:\temp" & vbCrLf & "cscript test.vbs"

If Dir(……
[/Quote]
感谢您的回答
采用完整路径的代码我试过了,实现不了
原因是Shell调用的时候有一个默认的运行路径,如果不更改这个路径
会找不到需要运行的vbs
Tiger_Zhao 2012-04-19
  • 打赏
  • 举报
回复 1
Shell 命令是在当前目录下执行的,所以可以这样:
ChDrive "C:"
ChDir "C:\Temp"
Shell "cscript test.vbs"
  • 打赏
  • 举报
回复
Sub Macro1()
Shell "C:\windows\system32\cmd.exe /K cd c:\&cd c:\temp&cscript test.vbs"
End Sub


cmd一行多命令,中间用&隔开。


不知道这样行不行

2,503

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧