将硬编码路径替换为vbscript的动态路径

Tod*_*Tod 2 vbscript excel vba excel-vba

我有一个vbscript打开工作簿并在工作簿的module1中运行一个过程,然后关闭工作簿.效果很好.但这就是事情.工作簿的路径是硬编码的,如下所示:

Set xlBook = xlApp.Workbooks.Open("E:\FolderName\WorkbookName.xlsm", 0, True)
Run Code Online (Sandbox Code Playgroud)

我不介意要求用户将脚本和工作簿放在同一个文件夹中,并要求他们不要更改工作簿文件的名称,但我想用硬编码的路径替换动态的东西,比如:

Set xlBook = xlApp.Workbooks.Open(VBSPath & "\WorkbookName.xlsm", 0, True)
Run Code Online (Sandbox Code Playgroud)

所以路径是脚本的路径.

那可能吗?还有其他想法吗?

Ans*_*ers 5

VBScript通过WScript对象的属性提供有关当前脚本和主机进程的各种信息,其中包括:

  • ScriptFullName:当前脚本的完整路径.
  • ScriptName:当前脚本的文件名.

您可以ScriptFullName通过多种方式从属性派生脚本文件夹,例如

  • 使用路径`C:\ script.vbs\script.vbs`和`C:\ script.vbs`测试您的方法.您将看到唯一可靠的方法是使用[GetParentFolder](https://msdn.microsoft.com/en-us/library/22dyy47c(v = vs.84).aspx). (2认同)
  • @ Kul-Tigin我同意`GetParentFolder`是最可靠的方法,如果脚本名称也出现在路径的其他地方,那么`Replace`函数会有问题.这就是我将它们分别列为第一个和最后一个选项的原因.但是,如果未删除尾部反斜杠,则其余方法不应对示例路径有问题.更新了我的回答. (2认同)