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)
所以路径是脚本的路径.
那可能吗?还有其他想法吗?
狐
VBScript通过WScript对象的属性提供有关当前脚本和主机进程的各种信息,其中包括:
ScriptFullName:当前脚本的完整路径.ScriptName:当前脚本的文件名.您可以ScriptFullName通过多种方式从属性派生脚本文件夹,例如
通过使用GetParentFolder方法:
Set fso = CreateObject("Scripting.FileSystemObject")
dir = fso.GetParentFolderName(WScript.ScriptFullName)
Run Code Online (Sandbox Code Playgroud)dir = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName)-Len(WScript.ScriptName))
Run Code Online (Sandbox Code Playgroud)通过使用InStrRev和Left功能:
dir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))
Run Code Online (Sandbox Code Playgroud)a = Split(WScript.ScriptFullName, "\")
a(UBound(a)) = ""
dir = Join(a, "\")
Run Code Online (Sandbox Code Playgroud)通过使用Replace功能:
dir = Replace(WScript.ScriptFullName, WScript.ScriptName, "")
Run Code Online (Sandbox Code Playgroud)
请注意,如果(无论出于何种原因)脚本名称出现在脚本的全名中的其他位置(例如C:\script.vbs\script.vbs),则此方法可能会出现问题.