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 :

Problème pour Importer des infos à partir de plusieurs fichier TXT dans Excel


Sujet :

VBScript

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème pour Importer des infos à partir de plusieurs fichier TXT dans Excel
    Bonsoir,

    Je tiens à signaler que je suis complètement novice et que j'apprends le VBscript.

    J'ai récupéré un script qui permet de récupérer sur de multiple serveurs (liste de serveurs) des infos précises à partir d'un fichier txt en l'occurence le fichier le plus récent et de les exporter vers un fichier Excel. Le script en lui même fonctionne mais il y a un problème.
    Exemple :
    Server1
    >> dans le répertoire 'c:\rep' il y a plusieurs fichiers marqué : 'BEX012.txt', 'BEX013.txt', 'BEX014.txt', 'BEX015.txt'.... Il peut y avoir un ou deux fichiers crées chaque jour....
    Server2
    >> dans le répertoire 'c:\rep' il y a plusieurs fichiers marqué : 'BEX015.txt', 'BEX023.txt', 'BEX024.txt', 'BEX025.txt'.... Il peut y avoir un ou deux fichiers crées chaque jour....
    et ainsi de suite sur plusieurs serveurs...

    Le but est de récupérer à chaque fois sur chaque serveur les infos du dernier fichier txt créé sans forcément tenir compte du nom de fichier.

    Mon problème :
    Quand je lance le script, il va vérifier le premier serveur, récupère bien les infos désirées du dernier fichier créé (par exemple 'BEX015.txt') et les incères dans la feuille Excel. Tout se passe bien !!
    Là le problème commence, quand il passe sur le second serveur, le script ne vas plus vérifier le dernier fichiers créé mais se base sur le nom du fichier du premier serveur vérifié (BEX015.txt) alor que le dernier fichier créé se nomme 'BEX025.txt' (ou un autre nom). Et ainsi de suite pour tous les autres serveurs.

    Voici le code :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    Dim ExcelSheet
    Dim Age
    Dim TextStream
    Dim fileObj
    Dim Fso
    Dim strLatestFile
    Dim DateInfo
    Dim DiffADate
    Dim msg
    Dim strPath
    Dim strSaveFolder
    Dim NewAge
     
    on error resume next
     
    '
    ' the backup exec folder containing the logs must be shared as 'bx$'
    ' LIST OF SERVER TO BE CHECKED, list then as <server> not \\<server>
    ' one per line...
     
    strPath = "c:\scripts\servers.txt"
     
    'require folder 'strSaveFolder' to store excel sheets
     
    strSaveFolder = "c:\backuplogs"
     
    Set ExcelSheet = CreateObject("Excel.Sheet")
    ExcelSheet.Application.Visible = True
    ExcelSheet.ActiveSheet.Cells(1, 1).Value = "This is column A, row 1"
    ExcelSheet.ActiveSheet.Columns(1).ColumnWidth = 15
    ExcelSheet.ActiveSheet.Columns(2).ColumnWidth = 40
    ExcelSheet.ActiveSheet.Columns(3).ColumnWidth = 30
    ExcelSheet.ActiveSheet.Columns(4).ColumnWidth = 35
    ExcelSheet.ActiveSheet.Cells(1, 1).Value = "Server"
    ExcelSheet.ActiveSheet.Cells(1, 2).Value = "Date completed"
    ExcelSheet.ActiveSheet.Cells(1, 3).Value = "Status"
    ExcelSheet.ActiveSheet.Cells(1, 4).Value = "Error"
    ExcelSheet.ActiveSheet.Cells(1, 4).Value = Date
    Row = 2
    col = 1
     
    Set Fso = CreateObject("scripting.FileSystemObject")
    If (Fso.FileExists(strPath)) Then
     Set ServerList = Fso.OpenTextFile(strPath, 1)
    Else
     MSGBOX "we need a list of servers guys!"
    End If
     
    Do Until ServerList.AtEndOfLine = True
        strServer = ServerList.ReadLine
        strPath = "\\" & strServer & "\bx$"
        If (Fso.FolderExists(strPath)) Then
            Set folderObj = Fso.GetFolder(strPath)
        Else
            ExcelSheet.ActiveSheet.Cells(Row, 2).Value = strServer
            ExcelSheet.ActiveSheet.Cells(Row, 3).Value = "No BX$ share on server"
    End If
     
    Set fileContainer = folderObj.Files
     
    For Each fileObj In fileContainer
     
     strRt = Right(fileObj.Name, 3)
            If strRt = "txt" Then
       strFile = fileObj.Name
     
       DiffADate = DateDiff("d",fileObj.DateCreated,Now)
       NewAge = DiffADate
       If (NewAge < Age=true) or (Age="") Then
        strLatestFile = fileObj.Name
        Age = NewAge
       End If
            End If
    Next
     
    strPath = strPath & "\" & strLatestFile
    set fileObj = Fso.GetFile(strPath)
    Set TextStream = fileObj.OpenAsTextStream(1)
    ExcelSheet.ActiveSheet.Cells(Row, 1).Value = strServer
    col = col + 1
    ExcelSheet.ActiveSheet.Cells(Row, 3).Value = "failed..."
     
    Do While Not textstream.AtEndOfStream
     Str = textstream.ReadLine
            posErr = InStr(Str, "^ ")
            posEnd = InStr(Str, "b ended:")
            posCom = InStr(Str, "completed on")
            posStatus = InStr(Str, "completion status:")
    If posCom <> 0 Then
     Str = Mid(Str, 8, 35)
            ExcelSheet.ActiveSheet.Cells(Row, 2).Value = Str
            ExcelSheet.ActiveSheet.Cells(Row, 3).Value = "pending tape change"
    End If
    If posEnd = 3 Then
     Str = Mid(Str, 12, 50)
            ExcelSheet.ActiveSheet.Cells(Row, 2).Value = Str
    End If
    If posStatus = 5 Then
     Str = Mid(Str, 24, 35)
            ExcelSheet.ActiveSheet.Cells(Row, 3).Value = Str
    End If
    If posErr <> 0 Then
     ExcelSheet.ActiveSheet.Cells(Row, 4).Value = LastStr
            col = col + 1
    End If
    LastStr = Str
    Loop
     
    Str = ""
    LastStr = ""
    Row = Row + 1
    Loop
     
    If (Fso.FolderExists(strSaveFolder)) Then
     strSaveAs = Date
     strSaveAs = Replace(strSaveAs, "/", "-")
     strSaveAs = "c:\backuplogs\" + strSaveAs + ".xls"
            ExcelSheet.SaveAs strSaveAs
    Else
     MsgBox "No C:\backuplogs folder on this server", vbInformation
    End If
    MERCI à vous tous pour votre aide et ce que vous allez m'apprendre, moi je retourne à mes tutoriaux et continue à chercher.

    Odi

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Pas testé, mais je pense qu'il te manque une init des variables à l'entrée de la boucle serveur, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do Until ServerList.AtEndOfLine = True
    Age=""
    NewAge=""
    ....
    car après le 1er passage, il y a qque chose dedans, contrairement à la première boucle
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    C'est exactement ça !!! il fallait réinnitialiser !!

    Je te remercie cela fonctionne désormais.

    Maintenant je vais tâcher de l'améliorer et y ajouter d'autre fonction

    Encore Merci et à très bientôt


    Odi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Macro pour importer des données web avec plusieurs variables
    Par lajim dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/04/2015, 15h46
  2. [XL-2002] Code VBA pour colorier des cellules à partir de plusieurs critères
    Par NoodleDS dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/11/2013, 22h05
  3. FileZilla : Problème pour importer des sites
    Par Alex70 dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 17/12/2011, 01h57
  4. Réponses: 2
    Dernier message: 24/09/2009, 13h22
  5. Réponses: 8
    Dernier message: 22/08/2006, 12h51

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