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
|
Private Function RegChangeInFile(motif As String, changement As String, sFile As String) As Boolean
' la fonction ne s'execute que si l'on ajoute le caractere [$] pour désigner l' objet à trouver
If InStr(changement, "[$]") > 0 Then
If Dir(sFile, vbSystem Or vbHidden) = vbNullString Then
'fichier existe?
ChangeWords = False
Else
'ouvre le fichier
'On le lit entierement d'un bloc
Dim FF As Integer, sBuffer As String
FF = FreeFile
Open sFile For Binary As #FF
sBuffer = String(LOF(FF), 0)
Get #FF, , sBuffer
Close #FF
' on instancie un objet RegExp avec son motif depuis la fonction customisée RegPattern
Dim Recherche As RegExp, occurrences As MatchCollection
Set Recherche = RegPattern(motif)
' la liste des occurences en tant que liste de Match
Set occurences = Recherche.Execute(sBuffer)
'If len(sBuffer)>0 then
' on instancie un objet RegExp avec son motif depuis la fonction customisée RegPattern
Set Recherche = RegPattern(motif)
'response.write("motif >>>>>>>>>>> " & Recherche.pattern)
' la liste des occurences en tant que liste de Match
Set occurences = Recherche.Execute(sBuffer)
'response.write("occurences trouvées " & occurences.Count)
If occurences.Count > 0 Then
For Each trouve In occurences
Dim tmp As String, tmpChange As String
tmp = trouve.Value
' on dénude l'occurence trouvée des tags < et > , l'utilisateur doit les fournir dans le remplacant
tmp = Replace(tmp, ">", "")
tmp = Replace(tmp, "<", "")
tmpChange = changement
' permet de placer le motif trouvé où l'on veut dans le remplacant
tmpChange = Replace(tmpChange, "[$]", tmp)
sBuffer = Replace(sBuffer, trouve.Value, tmpChange)
Next
Else
End If
'on écrit
'comme pour la lecture, on l'ecrtit d'un bloc
FF = FreeFile
Open sFile For Binary As #FF
Put #FF, , sBuffer
Close #FF
RegChangeInFile = True
End If
End If
End Function
Private Function RegPattern(pattern As String)
' la fonction RegPattern va servir a instancier facilement un objet RegExp configuré en standard
'avec en paramétre le motif
'Création d'une nouvelle instance de l'objet RegExp
Set oRegExp = New RegExp
With oRegExp
'Une recherche globale s'effectue sur la totalité du texte, sans s'arrêter dès le premier résultat trouvé
.Global = True
'Le texte est-il considéré comme une seule et même ligne, ou comme plusieurs lignes distinctes ?
.MultiLine = True
'Tient-on compte de la différence entre majuscules et minuscules (case sensitiveness) ou non (case insensitiveness) ?
.IgnoreCase = True
'Clef de voûte de notre expression réguliére (en paramétre)
.pattern = pattern
End With
Set RegPattern = oRegExp
End Function
Private Sub Command1_Click()
Dim change As Boolean
Dim rep As String
'obtient le premier fichier ou répertoire qui est dans "c:\TEST_HTML"
rep = Dir("C:\TEST_HTML\*.html", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr("C:\TEST_HTML\" & rep) And vbDirectory) = vbDirectory Then
MsgBox "Répertoire " & rep
Else
MsgBox "Fichier " & rep
'à chaque fichier html trouvé, on crée un fichier txt
FileCopy "C:\TEST_HTML\" & rep, "C:\TEST_HTML\" & rep & ".txt"
'change = False
' les modifications se font par l'appel à des fonction et non a des sous routines comme précédemment
' avantage : on n'utilise pas de variables globales mais simplement des variables locales
change1 = RegChangeInFile(">[0-9]:[0-9]+<", ">00:0[$]<", "C:\TEST_HTML\" & rep & ".txt")
change2 = RegChangeInFile(">[0-9]+:[0-9]+<", ">00:[$]<", "C:\TEST_HTML\" & rep & ".txt")
change3 = RegChangeInFile(">[0-9]:[0-9]+:[0-9]+<", ">0[$]<", "C:\TEST_HTML\" & rep & ".txt")
End If
'passe à l'élément suivant
rep = Dir
Loop
If change1 = True And change2 = True And change3 = True Then MsgBox "Terminé"
End Sub
Private Sub Command2_Click()
Unload Me
End Sub |
Partager