Question de débutant en jscript

Bonjour à tous,

bon ben voila, j'ai besoin d'aide pour faire un script sur un réseau d'entreprise win 2000.
je veux qu'un script d'ouverture de cession ouvre un fichier .doc lors de la connexion réseau.
Simple....peut être pour vous mais moi je débute...

alors ce que je fais c'est ça :

fichier=("fichier.doc");

var fso= new ActiveXObject("Scripting.fileSystemObject");

if (fso.FileExists(fichier))

{

var W=new ActiveXObject("Word.Application");

W.Visible=true;

W.Documents.Open(fichier);
}


ce script marche quand on le lance en local, mais rien ne se passe lorsqu'il est mis en place sur le réseau. Word ne se lance ni sur les machines clientes ni sur le serveur. J'aimerais savoir quelle serait l'instruction qui pourrait faire marcher ça correctement.
je précise que les noms de fichiers et la mise en place dans les stratégies de groupe, netlogon et tout ça, c'est OK. pas d'erreurs de ce coté là.
merci de m'apporter vos connaissances, je suis un peu perdu...

--
je@n pierre

Un homme averti ...se doit d'avertir les autres.

15 réponses

  1. Bonjour,

    une observation...

    Le chemin d'accès est incomplet ;
    fichier=("fichier.doc");

    sous vbs je fais comme ceci
    CeFichier = WScript.ScriptFullName
    MonFichier = Left(CeFichier, InStrRev(CeFichier, "\"))
    MonFichier = MonFichier & "fichier.doc"

    ou encore quelque chose comme :

    lecteur=%systemroot%
    lecteur=mid(lecteur,1,2)
    fichier=(lecteur & "\Documents and Settings\" & %username% & "\Bureau\MonDocument.doc")

    je n'ai que des connaissances de base en js, mais à toutes les fois que je prend du code source sur msdn VBS la démonstration est présenté dans les 2 langages( JS et VBS).

    Lupin
    0
    1. Bonjour Lupin,

      pour le chemin du fichier, pas de problème il est dans netlogon et j'ai écrit
      0
      1. Bonjour Lupin,

        pour le chemin du fichier, pas de problème il est dans netlogon et j'ai écrit "fichier .doc" pour simplifier.
        Si j'ai un problème de chemin ça pourrait être plutot dans l'appli.

        je vais aussi puiser des idées sur msdn, mais comme je débute....
        j'aimerais bien trouver rapidement, mais ...

        merci, si tuas d'autres idées pour m'aider où bien la meme chose en VBS
        0
        1. re:

          un script VBS pure !

          Dim objFSO, CeDocument, Chemin
          
              CeDocument = "fichier.doc"
              Set objFSO = CreateObject("Scripting.FileSystemObject")
              Set wrdApp = CreateObject("Word.Application")
              ' Vérification de la présence du document
              Chemin = WScript.ScriptFullName
              Chemin = Left(Chemin, InStrRev(Chemin, "\"))    
              CeDocument = Chemin & "fichier.doc"
              If (objFSO.FileExists(CeDocument)) Then
                  ' Ouverture du document word
                  Set wrddoc = wrdApp.Documents.Open(CeDocument)
              Else
                  ' Création du document word
                  Set wrddoc = wrdApp.Documents.Add
                  wrdApp.ActiveDocument.SaveAs(CeDocument)
              End If
              wrdApp.Visible = True
              Set wrddoc = Nothing
              Set objFSO = Nothing
          	
              WScript.Echo "Fin d'exécution" & vbCrLf & "Bonne journée!"
          
          WScript.Quit
          


          copier/coller dans un fichier texte que tu renomme avec l'extension vbs.

          en supossant que le script est dans le même répertoire que
          le document word!

          Lupin
          0
          1. bonjour,

            merci d'avoir fouillé dans tes tips. J'ai modifié ton vbs comme ça :
            (j'enlève ce qui ne me sert à rien)

            Dim objFSO, CeDocument, Chemin

            CeDocument = "\\serveur\netlogon\FIC.doc"
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            Set wrdApp = CreateObject("Word.Application")
            ' Vérification de la présence du document
            Chemin = WScript.ScriptFullName
            ' Chemin = Left(Chemin, InStrRev(Chemin, "\"))
            ' CeDocument = Chemin & "\\serveur\netlogon\FIC.doc"
            If (objFSO.FileExists(CeDocument)) Then
            ' Ouverture du document word
            Set wrddoc = wrdApp.Documents.Open(CeDocument)
            ' Else
            ' Création du document word
            ' Set wrddoc = wrdApp.Documents.Add
            ' wrdApp.ActiveDocument.SaveAs(CeDocument)
            End If
            wrdApp.Visible = True
            Set wrddoc = Nothing
            Set objFSO = Nothing

            ' WScript.Echo "Fin d'exécution" & vbCrLf & "Bonne journée!"

            WScript.Quit


            FIC.doc est en place dans netlogon, mon script s'appelle message.vbs, et dans mon profil j'ai mis en ouverture de cession \\serveur\netlogon\message.vbs.

            lorsque je lance message.vbs dans le serveur (en local) ça marche, mais lorsque j'ouvre une cession sur le domaine avec mon login, eh ben rien ne se passe.

            point mort....reflexions.....
            0
            1. re :

              Const RepSrcFichier = "\\serveur\netlogon"
              Const LecteurReseau = "M:"
              
              Dim objFSO, objReseau, CeDocument
              
              Set objReseau = CreateObject("WScript.Network")
              objReseau.MapNetworkDrive LecteurReseau, RepSrcNotes, "True"
              
              Set objFSO = CreateObject("Scripting.FileSystemObject")
              Set wrdApp = CreateObject("Word.Application")
              
              ' Vérification de la présence du document
              CeDocument = LecteurReseau & "\" & "FIC.DOC"
              If (objFSO.FileExists(CeDocument)) Then
                ' Ouverture du document word
                Set wrddoc = wrdApp.Documents.Open(CeDocument)
              End If
              
              wrdApp.Visible = True
              objReseau.RemoveNetworkDrive LecteurReseau, True, True
              
              Set wrddoc = Nothing
              Set objFSO = Nothing
              Set objReseau = Nothing
              
              WScript.Quit
              


              Lupin
              0
              1. Merci Lupin pour le temps que tu me consacres.

                j'ai essayé ça ne marche pas.
                j'ai changé ligne 7 "RepSrcNotes" en "RepSrcFichier" ça me parait plus logique. comme ça, ça marche encore en local, mais toujours pas en réseau.
                c'est vrai que c'est plus facile pour moi qui suit devant mon cas réel, pour toi, tu avances en aveugle, sans voir le résultats de ton prog.
                Avec ce que tu m'as donné je continue à réfléchir un peu ce WE, on se tient informé, sur ce forum.

                0
                1. re :

                  quelques trucs de déboggage !

                  A.) cette ligne :
                  Const RepSrcFichier = "\\serveur\netlogon"

                  pourrait être remplacer par :

                  Const RepSrcFichier = "\\192.168.0.1\netlogon"

                  B.) ajouter des lignes comme :

                  CeDocument = LecteurReseau & "\" & "FIC.DOC"
                  WScript.Echo CeDocument

                  et autre trucs important :

                  créer un raccourci du script, ensuite éditer les propriétés du
                  raccourci.

                  remplacer :

                  Cible : C:\TEMP\OuvrirWord.vbs

                  par :

                  Cible : %windir%\system32\cscript.exe "C:\Temp\OuvrirWord.vbs" //x

                  lancer le raccourci, et c'est le déboggeur qui se déclenche,
                  et la c'est du mode pas à pas !

                  après la ligne :
                  objReseau.MapNetworkDrive LecteurReseau, RepSrcNotes, "True"

                  assure-toi que le lecteur est mappé en visualisant dans l'explorateur windows.

                  Lupin
                  0
                  1. et puisque le problème semble réseau...

                    le lecteur réseau !

                    Const RepSrcFichier = "\\serveur\netlogon"
                    Const RepSrcFichier = "\\192.168.0.1\netlogon"

                    Lorsque tu connecte un lecteur réseau, celui-ci est à coup
                    sur un lecteur virtuel qui pourrait ne pas être à la racine
                    du lecteur physique touché.

                    ex.:

                    D:\Organisation\Users\netlogon\Fic.doc.

                    maintenant on définit un partage sur le dossier [\Users]

                    Const RepSrcFichier = "\\192.168.0.1\netlogon"

                    si le partage est sur le dossier [\netlogon]

                    alors on obtient :

                    Const RepSrcFichier = "\\192.168.0.1"

                    quand tu inscrit cette ligne dans //démarrer/exécuter
                    [\\192.168.0.1]
                    ou encore
                    [\\192.168.0.1\netlogon]

                    vois-tu le fichier FIC.doc ?

                    @+
                    Lupin
                    0
                    1. bonjour,
                      désolé, mais j'étais overbooké ce WE, je n'ai pas eu de temps pour le travail...
                      j'ai repris le fil mais rien n'avance, j'ai vérifié que le déroulement du programme se passe bien, le script reconnait aussi bien l'IP que le nom, le lecteur est bien mappé mais c'est l'application word qui ne se lance pas.

                      ce script me rendrait de grands services, c'est pourquoi je ne lache pas le morceau.
                      merci de ton aide
                      0
                      1. re :

                        alors plus simplement, test le script suivant à partir du poste
                        en question :

                        connecte le lecteur réseau manuellement sur la lettre M:

                        tel quel et sans modif , sauf bien sur la cte RepSrcFichier !

                        Const RepSrcFichier = "M:\Services\MyIP"
                        Dim objFSO, objWrdApp, objWrdDoc, CeDocument
                        Set objFSO = CreateObject("Scripting.FileSystemObject")
                        CeDocument = RepSrcFichier & "\" & "FIC.DOC"
                        If (objFSO.FileExists(CeDocument)) Then
                          Set objWrdApp = CreateObject("Word.Application")
                          WScript.Echo CeDocument
                          Set objWrdDoc = objWrdApp.Documents.Open(CeDocument)
                          objWrdApp.Visible = True
                        End If
                        Set objWrdDoc = Nothing
                        Set objWrdApp = Nothing
                        Set objFSO = Nothing
                        WScript.Echo "Fin."
                        WScript.Quit
                        


                        Les 2 Echos sont bien sur à des points stratégique.

                        Le dernier t'indique surtout qu'il n'y as pas eu d'erreur !.

                        test et dis moi, en effet je suis aveugle !

                        n.b. tu remarqueras que dans les versions précédentes que
                        j'ai proposé j'ai oublié de déclarer les objets words, ce que
                        j'ai corrigé ici.

                        Lupin
                        0
                        1. bonjour Lupin

                          tu vas me trouver bien nul, mais tant pis j'assume.
                          j'ai bien avancé puisque tes scripts fonctionnait bien mais le problème était ailleurs.
                          en effet pour faire mes tests j'utilisais mon login et je rentrais mon script d'ouverture dans le profil de mon login. Or c'est ça qui ne fonctionnait pas. Maintenant que j'utilise le paramètre sur une stratégie de groupe ça marche.
                          j'ai fait le test sur ton dernier, puis je suis revenu sur le précédent et il fonctionne aussi.
                          il me reste maintenant deux petits trucs à résoudre:
                          - je veux pouvoir récupérer le paramètre du fichier en arguments
                          -quand Word s'ouvre j'aimerais qu'il s'ouvre dans une fenêtre au centre de l'écran et qu'on puisse fermer cette fenêtre sans confirmation

                          en reprenant ce que tu m'as donné ça donne ça:

                          Dim objFSO, CeDocument, Chemin, wrddoc, objArgs

                          Set objArgs = WScript.Arguments

                          set CeDocument = ("\\dc\netlogon\" & objArgs(0) &".doc")

                          Set objFSO = CreateObject("Scripting.FileSystemObject")

                          Set wrdApp = CreateObject("Word.Application")

                          Chemin = WScript.ScriptFullName

                          If (objFSO.FileExists(CeDocument)) Then

                          Set wrddoc = wrdApp.Documents.Open(CeDocument)

                          End If
                          wrdApp.Visible = True
                          Set wrddoc = Nothing
                          Set objFSO = Nothing

                          WScript.Quit
                          0
                          1. Bonjour,

                            au contraire si tu as trouvé la soluce c'est très bien! Bravo :-)
                            je fais beaucoup d'erreur avant d'avoir un résultat concluant !
                            il y aura 25 ans que je code à temps partiel et ça change tout
                            le temps !

                            j'ai apporté quelques modif !

                            Dim objFSO, CeDocument, objAppWrd, objWrdDoc, objArgs 
                            
                            Set objArgs = WScript.Arguments 
                            
                            if ( objArgs.Count > 0 ) Then
                                CeDocument = ("\\dc\netlogon\" & objArgs(0) &".doc") 
                                Set objFSO = CreateObject("Scripting.FileSystemObject") 
                                Set objAppWrd = CreateObject("Word.Application") 
                            
                                If (objFSO.FileExists(CeDocument)) Then 
                                    Set objAppWrd = CreateObject("Word.Application") 
                                    Set ObjWrdDoc = objAppWrd.Documents.Open(CeDocument) 
                                    objAppWrd.Visible = True 
                                    Set objWrdDoc = Nothing
                                End If 
                            
                                Set objAppWrd = Nothing
                                Set objFSO = Nothing 
                            Else
                                WScript.Echo "Argument manquant!"
                            End If
                            
                            WScript.Quit
                            


                            quand je code, toute variable qu'il faut instancier porte
                            le prefixe [obj], implique l'utilisation du [Set MaVariable = "Cette objet"],
                            si la variable n'a pas ce prefixe, il s'agit d'une simple affectation.
                            [ MaVariable = "Cette valeur" ].

                            J'ai tester avec un chemin local (6e ligne) !

                            Lupin
                            0
                            1. suite :

                              Pour centrer l'application, je recommande un macro word, je code moins avec les objets Documents. Mais je me débrouille, alors il
                              suffit que tu ouvre word, tu lance une nouvelle macro

                              //Menu/Outils/Macro/Nouvelle Macro...

                              une petite cassette apparaît pour spécifier que tu es en mode
                              enregistrement, tu positionne word exactement comme tu le veux
                              et tu arrêtes l'enregistrement.

                              ensuite

                              //Menu/Outils/Macro/Visual Basic Editor (VBE)

                              dans la fenêtre projet, repere Normal/Modules/NewMacros

                              apporte ici le code, je pourrai le nettoyer !

                              ça ressemble a ceci !

                              Application.WindowState = wdWindowStateNormal
                              Application.Move Left:=99, Top:=84
                              Application.Resize Width:=447, Height:=383

                              @+
                              Lupin
                              0
                              1. bonsoir Lupin,

                                Je crois que je touche au but et c'est grace à toi.
                                je ne sais pas si tu as vu le titre du post, mais ça parlait de jscript....
                                je crois qu'on s'est éloigné. En tout cas pour terminer la conversation je crois que ça serait mieux pour tous qu'on termine par mail.
                                Donne moi ton adresse sur pc.tux.help@free.fr. Je te donnerais les derniers détails, entre autres pour la taille de la fenêtre.
                                merci encore.
                                0