2017-08-24 1 views
0

habe ich eine VBScript, die ein Lesezeichen in einem Word-Dokument zugreift:Wie kann ich auf eine Variable außerhalb eines VBScript von einem anderen Skript zugreifen?

`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("~")

Ich möchte diesen Teil des Codes: (C:\Users\1241\Downloads\HotelDel__advance.docm) eine Variable, die ich außerhalb dieses zugreifen Skript, so dass es würde so aussehen:

`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("~")` 

wo sich das Hotel die Variable ist.

Ich mag diese Variable folgende gleich:

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

Ich brauche diese Variable außerhalb dieses Skripts einstellen zu können, und in der Lage diese Variable für den Zugriff von innerhalb dieses Skripts.

Mit anderen Worten, ich möchte eine Fledermaus oder js oder einen vba oder ein vbs Script erstellen, die diese

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

Variable setzt, so kann ich es von meinen anderen Skripten zugreifen.

Wie stelle ich diese Variable anderen Skripten zur Verfügung, und wie greife ich auf diese Variable innerhalb der Skripte zu?

Ich habe dieses Problem seit etwa 3 Monaten alleine bearbeitet, und ich konnte es nicht herausfinden. Irgendwelche Ideen? Danke

+0

Haben Sie überlegt, eine Dokumentvariable oder möglicherweise eine benutzerdefinierte Dokumenteigenschaft zu verwenden? – Variatus

+0

Nun, hier ist was ich mache: Während ich mit Kunden telefoniere, benutze ich programmierbare Sprachbefehle, die die Skripte aktivieren. Zum Beispiel, wenn ich Coronado sage, öffnet es das Word-Dokument in diesem Skript. Wenn ich dann den Namen der Lesezeichen sage, aktiviert er die Skripte, die zu dem fraglichen Lesezeichen gehen. Auf diese Weise sehe ich die Informationen, nach denen ich suche, um die Kundenfragen zu beantworten, ohne eine Maus zu verwenden oder einen Bildlauf durchzuführen, um die Informationen zu finden. –

+0

Das Problem ist, dass ich ungefähr 100 Dokumente wie dieses habe und sie alle denselben Namen für die Lesezeichen haben. Wenn ich also beim ersten Öffnen des Dokuments die Dokumentvariable setzen kann, dann würde das die Variable für die Lesezeichen-Skripte setzen. Auf diese Weise kann ich, anstatt Tausende von Lesezeichen-Skripten zu erstellen, dieselben Skripte verwenden, die auf die Variable location des aktuellen Dokuments zugreifen. Außerdem kann ich mit der per Sprache programmierbaren Software nur 300 benutzerdefinierte Sprachbefehle erstellen. –

Antwort

0

Sie können Hotelvariable in der Windows-Registrierung definieren. Zum Beispiel HKEY_LOCAL_MACHINE \ Software \ Scott \ Hotels

Sie benötigen einen Prozesswert auf Hotel Variable zu setzen:

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) 

Sie Ihren Code aus der Registry lesen Sie Hotel Variable anpassen müssen:

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("~")` 
+0

Ok, wenn ich die Variable in der Registrierung platzieren, funktioniert es, aber wenn ich das Skript ausführen, um die Variable einzurichten: 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: \ Benutzer \ 1241 \ Downloads \ HotelDel__advance.docm" 'Create Schlüssel zu verwenden objReg.CreateKey HKEY_LOCAL_MACHINE, KeyPath –

+0

objReg.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strValue Ich bekomme einen Windows Script Host-Fehler. Zeile 12 Char 1 Fehler Objekt benötigt: 'objReq' Code 800A01A8 Quelle: Microsoft VBScript Laufzeitfehler –

+0

Vielen Dank, alles, was ich tun musste, war in die Registrierung gehen und sicherstellen, dass ich mir selbst die Erlaubnis gab, diese Variable unter der ändern scott registry .. Vielen Dank in der Tat. Endlich, nachdem ich 3 Monate lang meinen Kopf gegen die Wand geschlagen hatte, tat ich es mit deiner Hilfe. Ich danke dir sehr. Es ist wirklich sehr geschätzt. –

Verwandte Themen