我有一个vbscript打开工作簿并在工作簿的module1中运行一个过程,然后关闭工作簿.效果很好.但这就是事情.工作簿的路径是硬编码的,如下所示:
Set xlBook = xlApp.Workbooks.Open("E:\FolderName\WorkbookName.xlsm", 0, True)
我不介意要求用户将脚本和工作簿放在同一个文件夹中,并要求他们不要更改工作簿文件的名称,但我想用硬编码的路径替换动态的东西,比如:
Set xlBook = xlApp.Workbooks.Open(VBSPath & "\WorkbookName.xlsm", 0, True)
所以路径是脚本的路径.
那可能吗?还有其他想法吗?
狐
VBScript通过WScript
对象的属性提供有关当前脚本和主机进程的各种信息,其中包括:
ScriptFullName
:当前脚本的完整路径.
ScriptName
:当前脚本的文件名.
您可以ScriptFullName
通过多种方式从属性派生脚本文件夹,例如
通过使用GetParentFolder
方法:
Set fso = CreateObject("Scripting.FileSystemObject") dir = fso.GetParentFolderName(WScript.ScriptFullName)
通过使用Len
和Left
功能:
dir = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName)-Len(WScript.ScriptName))
通过使用InStrRev
和Left
功能:
dir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))
通过使用Split
和Join
功能:
a = Split(WScript.ScriptFullName, "\") a(UBound(a)) = "" dir = Join(a, "\")
通过使用Replace
功能:
dir = Replace(WScript.ScriptFullName, WScript.ScriptName, "")
请注意,如果(无论出于何种原因)脚本名称出现在脚本的全名中的其他位置(例如C:\script.vbs\script.vbs
),则此方法可能会出现问题.