Variable VBA Vbscrip

Variable VBA Vbscrip - VB/VBA/VBS - Programmation

Marsh Posté le 14-10-2009 à 17:40:38    

Bonjour a tous,
j'ai un script avec une partie vba,  
j'arrive bien a utiliser une variable de la partie vbscrip vers la macro vba , mais pas l'inverse !
Mavariable ==>ok
Mavariable2==>nok
j'essaye plusieurs combinaisons de guillemet , mais erreur vbscript !
 
en claire je veux recuperer, par exemple la valeur d'une cellule, et de l'utiliser après avec du code vbs.
 
dim Mavariable,Mavariable2
Mavariable=100
Set sh = WScript.CreateObject("WScript.Shell" )  
on error resume next
sh.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\accessVBOM",1,"REG_DWORD"
on error goto 0
Set exl = WScript.CreateObject("excel.Application" )
exl.Visible = false
set fichxl=exl.workbooks.add
Set mdle = fichxl.VBProject.VBComponents.Add(1)
mdle.CodeModule.InsertLines 1,"sub Macro1()"
mdle.CodeModule.InsertLines 2,"msgbox " & Mavariable <=====OK   (affiche 100)
mdle.CodeModule.InsertLines 3,Mavariable2 & " =range(""a1"" ).value" <=====NOK erreur
mdle.CodeModule.InsertLines 4,""
mdle.CodeModule.InsertLines 5,"End sub"
exl.Run "Macro1"
fichxl.close(false)
exl.quit
Set fichxl=nothing
set mdle=nothing
set exl=nothing
set sh=nothing
msgbox Mavariable2   <===== (affiche rien)
 
merci pour votre aide , faut-il utiliser par exemple une variable d'environnement ?

Reply

Marsh Posté le 14-10-2009 à 17:40:38   

Reply

Marsh Posté le 15-10-2009 à 09:43:47    

Premier problème : Erreur de syntaxe dans le code.

Essayer de remplacer  
  mdle.CodeModule.InsertLines 3,Mavariable2 & " =range(""a1"" ).value"
par
  mdle.CodeModule.InsertLines 3,"Mavariable2=Range(" &Chr$(34) & "a1" &Chr$(34) & " ).Value"


Chr$(34) ou Chr(34) est un guillemet.
 
Deuxième problème : Récupération d'une donnée venant d'un object activeX.
 
Ce n'est pas simple car il y a deux contextes diffférents.
Une solution consiste à écrire la variable dans un fichier côté VBA, et à lire ensuite ce fichier côté VBS.
Une autre solution consiste à écrire la variable dans le presse papier du côté VBA, et à lire ensuite le presse-papier côté VBS.

Reply

Marsh Posté le 18-11-2009 à 10:54:08    

olivthill a écrit :

Premier problème : Erreur de syntaxe dans le code.

Essayer de remplacer  
  mdle.CodeModule.InsertLines 3,Mavariable2 & " =range(""a1"" ).value"
par
  mdle.CodeModule.InsertLines 3,"Mavariable2=Range(" &Chr$(34) & "a1" &Chr$(34) & " ).Value"




 
Bonjour
 
C'est pas mieux, il me semble, car on n'écrit jamais: range (""a1"" ).value, mais range ("a1" ).value, sinon ERREURRRRRHH!
 
 
Ensuite, si tu écris :    Mavariable2 sans guillemets, cela voudrait dire que tu veux inscrire LA VALEUR de Mavariable2 , (et ce avant qu'elle ne soit connue! )
Si tu écrivais cela avec Mavariable, (qui vaut donc 100), tu aurais: 100 = range("a1" ).value, ce qui est !!!!!, or là, tu écris donc  
#Nul =range("a1" ).value, ce qui l'est plus encore.
 
Ce que tu veux, je crois c'est écrire la phrase de code telle quelle pour écrire une macro, et obtenir l'expression:  Mavariable2 = Range("a1" ).Value
pour obtenir cette valeur lors de l'exécution de macro1, et t'en servir après, c'est cela?
 
Tu dois donc mettre Mavariable2 ENTRE les guillemets de l'expression et supprimer l'esperluette. (le &.)
 
donc je suppose ici:
  mdle.CodeModule.InsertLines 3, "Mavariable2 = range("a1" ).value"
ou peut-être:
  mdle.CodeModule.InsertLines 3, ""Mavariable2 = range("a1" ).value""
Mais je ne comprends pas ta démarche. De quel fichier veux-tu récupérer la valeur de A1?  C'est cela l'essentiel.
 
et pour en faire quoi?
Je crois qu'il y a bien plus simple à faire.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed