当前位置:  开发笔记 > 后端 > 正文

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

如何解决《将硬编码路径替换为vbscript的动态路径》经验,为你挑选了1个好方法。

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

Set xlBook = xlApp.Workbooks.Open("E:\FolderName\WorkbookName.xlsm", 0, True)

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

Set xlBook = xlApp.Workbooks.Open(VBSPath & "\WorkbookName.xlsm", 0, True)

所以路径是脚本的路径.

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



1> Ansgar Wiech..:

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

ScriptFullName:当前脚本的完整路径.

ScriptName:当前脚本的文件名.

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

通过使用GetParentFolder方法:

Set fso = CreateObject("Scripting.FileSystemObject")
dir = fso.GetParentFolderName(WScript.ScriptFullName)

通过使用LenLeft功能:

dir = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName)-Len(WScript.ScriptName))

通过使用InStrRevLeft功能:

dir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))

通过使用SplitJoin功能:

a = Split(WScript.ScriptFullName, "\")
a(UBound(a)) = ""
dir = Join(a, "\")

通过使用Replace功能:

dir = Replace(WScript.ScriptFullName, WScript.ScriptName, "")

请注意,如果(无论出于何种原因)脚本名称出现在脚本的全名中的其他位置(例如C:\script.vbs\script.vbs),则此方法可能会出现问题.


使用路径`C:\ script.vbs\script.vbs`和`C:\ script.vbs`测试您的方法.您将看到唯一可靠的方法是使用[GetParentFolder](https://msdn.microsoft.com/en-us/library/22dyy47c(v = vs.84).aspx).
@ Kul-Tigin我同意`GetParentFolder`是最可靠的方法,如果脚本名称也出现在路径的其他地方,那么`Replace`函数会有问题.这就是我将它们分别列为第一个和最后一个选项的原因.但是,如果未删除尾部反斜杠,则其余方法不应对示例路径有问题.更新了我的回答.
推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有