2017-08-24 2 views
0

J'ai créé un VBScript qui accède à un signet dans un document Word:Comment puis-je accéder à une variable en dehors d'un script VBScript à partir d'un autre script?

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

Je veux que cette partie du code: (C:\Users\1241\Downloads\HotelDel__advance.docm) être une variable que j'accès à l'extérieur de cette script, de sorte que cela ressemblerait à:

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

où l'hôtel est la variable.

Je veux que cette variable est égal à la suivante:

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

Je dois pouvoir définir cette variable en dehors de ce script, et être en mesure d'accéder à cette variable à partir de ce script.

En d'autres termes, je veux créer une chauve-souris ou js ou un vba ou un script VBS qui définit cette

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

variable, donc je peux y accéder de mes autres scripts.

Comment rendre cette variable disponible pour d'autres scripts et comment accéder à cette variable depuis les scripts?

Je travaille sur ce problème depuis environ 3 mois maintenant, et je n'ai pas réussi à le comprendre. Des idées? Merci

+0

Avez-vous envisagé d'utiliser une variable de document ou, éventuellement, une propriété de document personnalisée? – Variatus

+0

Eh bien, voici ce que je fais: Comme je parle au téléphone avec les clients, j'utilise des commandes vocales programmables qui activent les scripts. Par exemple, quand je dis coronado, il ouvre le document Word dans ce script. Puis quand je dis le nom des signets, il active les scripts qui vont au signet en question. De cette façon, je vois les informations que je cherche pour répondre aux questions des clients, sans avoir à utiliser une souris ou un défilement pour trouver l'information. –

+0

Le problème est que j'ai environ 100 documents comme celui-ci, et ils ont tous le même nom pour les signets. Donc, si je peux définir la variable de document lorsque j'ouvre le document nécessaire pour la première fois, cela définirait la variable pour les scripts de signets. De cette façon, au lieu de créer des milliers de scripts de signets, je peux utiliser les mêmes scripts qui accèdent à la variable loaction du document courant. De plus, le logiciel de programmation vocale me permettra seulement de créer 300 commandes vocales personnalisées. –

Répondre

0

Vous pouvez définir la variable Hôtel dans le registre Windows. Par exemple, HKEY_LOCAL_MACHINE \ Software \ Scott \ Hôtel

Vous avez besoin d'un processus de mise en valeur à la variable Hôtel:

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) 

Vous devez adapter votre code à lecture variable Hôtel de Registre:

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, si je place la variable dans le registre, cela fonctionne, mais quand je lance le script pour configurer la variable: Const HKEY_LOCAL_MACHINE = & H80000002 Dim oReg Définir oReg = GetObject ("winmgmts: {impersonationLevel = usurpation d'identité}! \\ . \ root \ default: StdRegProv ") strKeyPath = "SOFTWARE \ Scott \" KeyPath = "SOFTWARE \ Scott" strValueName = "Hôtel" strValue = "C: \ Users \ 1241 \ Téléchargements \ HotelDel__advance.docm" 'Créer une clé à utiliser objReg.CreateKey HKEY_LOCAL_MACHINE, KeyPath –

+0

objReg.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strValue Je reçois une erreur d'hôte de script Windows. Line 12 Char 1 Erreur Objet requis: code 'objReq' 800A01A8 Source: erreur d'exécution de Microsoft VBScript –

+0

Merci beaucoup, tout ce que je devais faire était d'entrer dans le registre et m'assurer que je me suis donné la permission de changer cette variable sous le scott registry .. Merci beaucoup en effet. Finalement, après 3 mois passés à me battre la tête contre le mur, je l'ai fait avec votre aide. Merci beaucoup. C'est vraiment apprécié. –