IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

vbs tester si une application existe


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut vbs tester si une application existe
    bonjour,
    débutant, j'ai eu beau chercher, soit dans l'aide vbs, soit sur le net, je n'ai pas trouvé de fonction me signifiant si une application ( excel, word,...) existe sur le poste.
    en effet, quand je fais:

    AppExcel = CreateObject("Excel.Application")

    soit je crée l'objet, soit j'ai une erreur.
    en fait, je souhaite vérifier si une appli existe avant de lancer mon script vbs; et la, je sèche.

    si vous pouviez m'orienter pour une solution.
    merci d'avance.
    Notar
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    En vbscript il existe un moyen de gérer les erreurs en ajoutant en début de script la manière de gérer les erreurs.

    Par exemple tu peut lui mettre en première ligne "on error resume next" ce qui fera que ton script ne tient pas compte des erreurs, ou alors "on error goto GESTION_ERREUR" avec un pavé de gestion d'erreur qui commence par "GESTION_ERREUR : ".

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    bonjour,
    en cherchant, j'ai touvé et adapté ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    strComputer = "."
    set fso =CreateObject ("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where FileName = 'excel'  and Extension='exe'")
     
    For Each objFile in colFiles
            dim DriveRoot, DrivePath
      Set  fso = CreateObject("Scripting.FileSystemObject")
         DriveRoot = objFile.drive
         DrivePath = objFile.path
    If (fso.FileExists(DriveRoot&DrivePath&"excel.exe" ))Then
    Wscript.echo DriveRoot&DrivePath&"excel.exe"
    End If
    Next
    c'est impeccable mais avec un ordi cadencé à 2.66GHz avec 500Mo de RAM et un DD de 40 Go, çà met environ 45'' pour obtenir le résultat.
    Y-a-t-il une autre procédure qui pourrait accélérer notablement l'execution de la requête?
    merci d'avance pour vos contributions.
    Notar
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    merci Flamby38, je vais de ce pas employer ta solution.
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    en fait, ce sont deux scripts:
    le premier formate un fichier xls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Dim xlapp, classeur, feuille, Selection
    Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = false
    alert(xlapp)
    xlapp.DisplayAlerts = FALSE
    Set classeur = xlapp.Workbooks.open("C:\........\*.xls")
    Set feuille = classeur.ActiveSheet
    Set Selection = feuille.Columns("D:D")
    With Selection
    .ColumnWidth = 80
    .WrapText = True
    .Orientation = 0
    .AddIndent = False
    .ShrinkToFit = False
    .MergeCells = False
    End With
    Set Selection = feuille.Columns("C:C")
    With Selection
    .ColumnWidth = 30
    .WrapText = True
    End With
    Set Selection = feuille.Columns("A:A")
    With Selection
    .ColumnWidth = 10
    .WrapText = True
    End With
    classeur.Save
    classeur.Close  'quitte en sauvant
    xlapp.quit
    Set classeur = Nothing
    Set xlapp = Nothing
    le second envois ce fichier formaté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    With CreateObject("CDO.Message")
    .From="toto@wanadoo.fr"
    .To="tata@hotmail.com"
    .Subject="rapport hebdo pour la semaine 1 de 2010"
    .TextBody="Bonjour.Veuillez trouver, ci-joint, mes rapports pour la semaine 1 de 2010"
    .AddAttachment("C:\..........\*.xls")
    .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.wanadoo.fr"
    .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    .Configuration.Fields.Update
    On Error Resume Next
    .Send
    If Err Then MsgBox "Le message n'a pas pu être expédié."
    On Error GoTo 0
    End With
    donc si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    on error resume next
    en tête du premier script alors il ne s'interprètera pas et passera directement au second?

    merci.
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  6. #6
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    remplace les deux premières lignes de ton script par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim xlapp, classeur, feuille, Selection
    On Error Resume Next
    Set xlapp = CreateObject("Excel.Application")
    If IsObject(xlapp) Then
      On Error GoTo 0
      MsgBox "Le serveur automation MS Excel® est actif" 
    Else
      MsgBox "L'application MS Excel® n'est pas installée sur ce poste " & vbcrlf & "Bonne journée"
      WScript.Quit
    End if
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    merci omen999 pour ta contribution.
    dans le cas présent je n'ai pas besoin d'indiquer que Excel est installé ou pas car je mets juste en forme un fichier excel si l'appli existe: c'est plus propre pour envoyer le fichier; par contre si l'appli n'est pas installée le fichier restera brut; à charge pour le lecteur de le mettre en forme ( largeur colonnes pour lire facilement )
    mais je note, pour plus tard, la façon de faire pour savoir si l'appli existe.
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    reste que maintenant faut que je trouve comment je vais mettre en forme ( au format excel ) à partir d'une appli Open Office.
    si vous avez des pistes, je suis preneur; çà me fera gagner un temps précieux.
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

Discussions similaires

  1. Tester si une données existe deja
    Par mael94420 dans le forum ASP
    Réponses: 1
    Dernier message: 18/10/2005, 17h09
  2. Tester qu'une valeur existe dans une "liste"
    Par Oluha dans le forum Langage
    Réponses: 12
    Dernier message: 04/08/2005, 23h01
  3. Réponses: 2
    Dernier message: 20/05/2005, 10h18
  4. MDI => Tester si une fenêtre existe déjà ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/04/2005, 21h41
  5. Tester qu'une date existe
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/03/2005, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo