【发布时间】:2016-10-20 15:08:36
【问题描述】:
短背景
我有一个在 Excel 中构建的应用程序,我正在尝试添加 Excel 充当控制器并运行不同 VBScript 文件的功能(我知道这听起来很奇怪,但请耐心等待)。为了测试这个概念,我编写了一个简短的 VBScript,它只是 Echos 脚本所在文件夹的路径。
VBScript (run-from-excel.vbs)
Set fso = CreateObject("Scripting.FileSystemObject")
scriptPath = fso.GetAbsolutePathName(".")
WScript.Echo(scriptPath)
当在正确目录中的控制台使用cscript run-from-excel.vbs 运行时,输出为:C:\Users\cmfonvi\dev\vbscript,这与预期的一样。
现在,用于 Excel 集成。我写了一个简单的Sub,通过WScript在控制台上运行一个VBScript文件。
VBA - Excel
Sub runVBScript(filePath As String)
Shell "wscript " & filePath, vbNormalFocus
End Sub
我现在用命令运行这个Sub
runVBScript (ActiveWorkbook.Path & "\run-from-excel.vbs")
(工作簿和 VBScript 当前位于同一目录中,因此可行)。但是,输出并不像我预期的那样。它打开的窗口输出C:\Users\cmfonvi\Documents,这意味着以某种方式运行VBScript 的wscript 进程在%userprofile%\Documents 目录中被初始化。
我的问题有两个:
- 为什么会这样?
- 如何使控制台在正确的目录(例如,
%userprofile%\Desktop)中初始化?
【问题讨论】: