如何从另一个脚本访问VBScript之外的变量?

时间:2017-08-24 01:06:35

标签: javascript variables vbscript word-vba

我创建了一个VBScript来访问word文档中的书签:

`Set oShell = CreateObject("WScript.Shell")`

CreateObject("WScript.Shell").Run("""C:\Users\1241\Downloads\HotelDel__advance.docm""")     WScript.Sleep (1000) WScript.CreateObject("WScript.Shell").SendKeys("%m") WScript.CreateObject("WScript.Shell").SendKeys("Beachservices") WScript.CreateObject("WScript.Shell").SendKeys("~")

我想要这部分代码:     (C:\Users\1241\Downloads\HotelDel__advance.docm)  是一个我在这个脚本之外访问的变量,所以它看起来像:

`Set oShell = CreateObject("WScript.Shell")
 CreateObject("WScript.Shell").Run(""Hotel"")
 WScript.Sleep (1000)
 WScript.CreateObject("WScript.Shell").SendKeys("%m")
 WScript.CreateObject("WScript.Shell").SendKeys("Beachservices")
 WScript.CreateObject("WScript.Shell").SendKeys("~")`

其中酒店是变量。

我希望此变量等于以下内容:

`Hotel = C:\Users\1241\Downloads\HotelDel__advance.docm`

我需要能够在此脚本之外设置此变量,并且能够从此脚本中访问此变量。

换句话说,我想创建一个bat或js或vba或vbs脚本来设置这个

`Hotel = C:\Users\1241\Downloads\HotelDel__advance.docm`

变量,所以我可以从其他脚本访问它。

如何将此变量用于其他脚本,以及如何从脚本中访问此变量?

我自己一直在处理这个问题大约3个月了,我一直无法弄明白。有任何想法吗?感谢

1 个答案:

答案 0 :(得分:0)

您可以在Windows注册表中定义Hotel变量。例如,HKEY_LOCAL_MACHINE \ Software \ Scott \ Hotel

您需要一个过程来将值设置为酒店变量:

Const HKEY_LOCAL_MACHINE = &H80000002

Dim oReg
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Scott\"
KeyPath = "SOFTWARE\Scott"
strValueName = "Hotel"
' strValue = "C:\Users\1241\Downloads\HotelDel__advance.docm"
strValue =Inputbox("Hotel variable value","Scott program")

' Create key to use
objReg.CreateKey(HKEY_LOCAL_MACHINE, KeyPath)
objReg.SetStringValue(HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue)

您必须调整代码以从注册表中读取Hotel变量:

Const HKEY_LOCAL_MACHINE = &H80000002

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Scott"
strValueName = "Hotel"
strHotel = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strHotel

...

CreateObject("WScript.Shell").Run(strHotel)
 WScript.Sleep (1000)
 WScript.CreateObject("WScript.Shell").SendKeys("%m")
 WScript.CreateObject("WScript.Shell").SendKeys("Beachservices")
 WScript.CreateObject("WScript.Shell").SendKeys("~")`