Le langage VBS

Résolu/Fermé
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 - 17 avril 2009 à 21:22
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 - 23 avril 2009 à 11:04
Bonjour,


J'ai lu dans forum qu'il était possible de contrôler Excel à partir d'un bloc note avec le langage VBS. Cela est-il vrai ??? et comment fait-on pour compiler le le "programme" dans le Word ??

Merci
A voir également:

7 réponses

salut
c'est possible car Excel, Word et pas mal d'autres programmes sont aussi des serveurs OLE.

il t'est donc possible, en vbs (en fait n'importe quel langage supporté par un hote de scripting tel WSH ou MSIE) de créer un objet Excel et de lui faire exécuter des instructions Excel (en fait toutes celles que tu peux utiliser dans les macros Excel). Si tu crées un objet Word, il sera capable d'exécuter tes instructions à partir du moment où ce sont des instructions connues par les macros Word). etc...

et pour finir, le vbs ne se compile pas (ni le jscript) : on se contente (avec notepad) de saisir le source et d'enregistrer dans un fichier .vbs (ou .js c'est selon)
ensuite, on le fait exécuter par WSH
a) en double-cliquant l'icône du script => ça lancera WSCRIPT.EXE qui interprétera ton script
b) depuis une boîte DOS en lançant C:\> SCRIPT c:\sources\hello.vbs

exemple de script :

wscript.echo "Hello, world!"


un peu de littérature : https://docs.microsoft.com/en-us/
0
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
18 avril 2009 à 15:54
OK d'accord. J'ai une macro (en VBA sur Excel). Je peux donc la mettre sur un notepad et le changer de format en .VBS => Comme VBS est un dérivé de VBA normalement l'éxecution du script VBS devra se compiler ??

merci
0
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
20 avril 2009 à 11:23
Salut,

J'ai téléchargé Notepad++. J'ai mis mon script. Et lorsque je fais "enregistrer sous" dans "Type" je peux choisir :
Visual Basic file (*.vb; *.vbs)
Mais une fois enregistrer il m'enregistre en format .VB et non en .VBS.

Du coup j'ai fait renommer le fichier et j'ai ajouter un S. Lorsque j'exécute ma arco RIEN ne se passe ..... même pas l'éxécution d'Excel :
Function main()
 appel_macro_NP()
End Function
 
 
Function appel_macro_NP() 

 Dim Xl
 Dim Wb
 Dim NomMacro
 
 
 Set Xl = CreateObject("Excel.application")
 Xl.Visible = true
 Set Wb = Xl.Workbooks.Open("C:\Documents and Settings\XXX\Bureau\classeurtre.xls")
 


 Xl.run WB.Name & "!Module5.essai" 

xl.quit
set wb = Nothing
set Xl = Nothing 

End Function 

Le nom de la macro est : essai

merci bien
0
Hello

C'est normal que rien ne soit exécuté car ton .vbs ne contient que des fonctions et pas de programme principal ! Car autant Excel exécute tes macros/modules/etc en appelant main() autant wsh (via cscript.exe ou wscript.exe) n'est pas au courant de cette convention.

Je te propose donc d'enlever les lignes function main() et end function.
Ainsi, ton bloc ne comporte plus que appel_macro_NP()

Comme nous en sommes à tailler dans le vif, prends donc l'habitude de ne pas utiliser de function lorsqu'il n'y a a pas de valeur de retour. Ainsi, ta fonction appel_macro_NP ne renvoyant rien, tu peux la transformer en sub :
sub appel_macro_NP
...
...
...
end sub
L'appel du sub s'effectuera alors avec simplement appel_macro_NP

Nous avons donc:

sub appel_macro_NP()
Dim Xl
Dim Wb
Dim NomMacro
Set Xl = CreateObject("Excel.application")
Xl.Visible = true
Set Wb = Xl.Workbooks.Open("C:\Documents and Settings\XXX\Bureau\classeurtre.xls")
Xl.run WB.Name & "!Module5.essai"
xl.quit
set wb = Nothing
set Xl = Nothing
End sub

appel_macro_NP ' 1ere ligne du pgm principal
wscript.echo "Terminé!" ' 2eme ligne du pgm principal

mets tout ça dans un fichier .vbs puis double-clique-le.

nb: je suis pas suffisamment expert dans le pilotage d'Excel depuis wsh pour te certifier que ton Excel sera visible. J'ai l'habitude de poser dans Excel des extractions de données depuis du wsh et je n'ai jamais vu la moindre fenêtre Excel. Par contre, si le script se plante avant de fermer Excel, tu vois (grâce au gestionnaire de tâches) qu'un Excel est démarré alors que tu ne vois pas sa fenêtre.
ex:
a = 10
Set lExcel = CreateObject("Excel.Application")
lExcel.workbooks.Add
lExcel.ActiveWorkBook.ActiveSheet.Cells(1, 1).Value = 1 / (a - 10)
lExcel.Activeworkbook.SaveAs "essai.xls"
lExcel.Quit
Set lExcel = nothing
s'arrête à cause d'une division par zéro, mais l'excel reste vivant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
21 avril 2009 à 10:28
Salut !!

Merci pour ta réponse Othanga.
Mais en faite j'ai trouvé le probléme (de débutant ...)
J'ai oublié d'appelé ma fonction main au début de mon script ^^

+++
0
othanga Messages postés 23 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 9 mai 2010 2
21 avril 2009 à 10:34
cool :-)

alors oublie pas de le marquer résolu.

Bons scripts !
0
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
23 avril 2009 à 11:04
Bonjour,


J'aimerais avoir confirmation :
Avec le VBS je peux ne piltoter que des applications de Windows ??

Je ne peux pas piloter des logiciels qui ne sont pas développés par windows ?? Si non existe-il un moyen de piloter ces logiciels par un script ?? Merci !


Merci d'avance
0