Rechercher/remplacer chaine entre deux balise
propededeutique
Messages postés
3
Statut
Membre
-
propededeutique Messages postés 3 Statut Membre -
propededeutique Messages postés 3 Statut Membre -
Bonjour à tous,
Dans le code suivant (récupéré sur un forum, vba excel), je récupère tout le code de fichiers html situés dans un répertoire pour les concaténer dans un seul fichier, les uns à la suite des autres.
Mon problème est le suivant :
- je ne veux conserver dans le fichier ou j'ai concaténé tout le code des fichiers html que le code situé entre les balises <body> et </body> ainsi que les caractères de séparation que j'ai introduit entre chaque fichier .(***************)
Pour info, j'ai 1500 fichiers à concaténer!
Mon vba datant maintenant d'il y a quelque temps (et n'étant pas un programmeur!), je suis un peu perdu.
Merci d'avance pour votre aide. Bye
Sub copy_files_into_unique_file()
' récupère tout le contenu de fichiers situés dans un m^me répertoire pour les copier dans un seul fichier
Dim Fich As String
Dim separator As String ' sépare les fichiers concaténés
separator = "*********************"
Chemin = "d:\tmp\geo\site\"
Open "d:\tmp\extract\b.txt" For Output As #2
Fich = Dir(Chemin & "*.html")
Do While Fich <> ""
Open Chemin & Fich For Input As #1
Do While Not EOF(1)
Line Input #1, ligne
Print #2, ligne
Loop
Print #2, separator
Close #1
Fich = Dir
Loop
Close #2
End Sub
Dans le code suivant (récupéré sur un forum, vba excel), je récupère tout le code de fichiers html situés dans un répertoire pour les concaténer dans un seul fichier, les uns à la suite des autres.
Mon problème est le suivant :
- je ne veux conserver dans le fichier ou j'ai concaténé tout le code des fichiers html que le code situé entre les balises <body> et </body> ainsi que les caractères de séparation que j'ai introduit entre chaque fichier .(***************)
Pour info, j'ai 1500 fichiers à concaténer!
Mon vba datant maintenant d'il y a quelque temps (et n'étant pas un programmeur!), je suis un peu perdu.
Merci d'avance pour votre aide. Bye
Sub copy_files_into_unique_file()
' récupère tout le contenu de fichiers situés dans un m^me répertoire pour les copier dans un seul fichier
Dim Fich As String
Dim separator As String ' sépare les fichiers concaténés
separator = "*********************"
Chemin = "d:\tmp\geo\site\"
Open "d:\tmp\extract\b.txt" For Output As #2
Fich = Dir(Chemin & "*.html")
Do While Fich <> ""
Open Chemin & Fich For Input As #1
Do While Not EOF(1)
Line Input #1, ligne
Print #2, ligne
Loop
Print #2, separator
Close #1
Fich = Dir
Loop
Close #2
End Sub
A voir également:
- Rechercher/remplacer chaine entre deux balise
- Rechercher remplacer word - Guide
- Nombre de jours entre deux dates excel - Guide
- Remplacer disque dur par ssd - Guide
- Rechercher ou entrer l'adresse - Guide
- Comment faire deux colonnes sur word - Guide
1 réponse
Essaie un truc de ce genre
*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Sub copy_files_into_unique_file()
' récupère tout le contenu de fichiers situés dans un m^me répertoire pour les copier dans un seul fichier
Dim Fich As String
Dim separator As String ' sépare les fichiers concaténés
separator = "*********************"
Chemin = "d:\tmp\geo\site\"
Open "d:\tmp\extract\b.txt" For Output As #2
Fich = Dir(Chemin & "*.html")
Do While Fich <> ""
Open Chemin & Fich For Input As #1
corps=False
Do While Not EOF(1)
Line Input #1, ligne
If Left (ligne,6)="<body>" Then
corps=True 'On est dans le corps du html
EndIf
If corps Then Print #2, ligne
Loop
Print #2, separator
Close #1
Fich = Dir
Loop
Close #2
End Sub
*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Sub copy_files_into_unique_file()
' récupère tout le contenu de fichiers situés dans un m^me répertoire pour les copier dans un seul fichier
Dim Fich As String
Dim separator As String ' sépare les fichiers concaténés
separator = "*********************"
Chemin = "d:\tmp\geo\site\"
Open "d:\tmp\extract\b.txt" For Output As #2
Fich = Dir(Chemin & "*.html")
Do While Fich <> ""
Open Chemin & Fich For Input As #1
corps=False
Do While Not EOF(1)
Line Input #1, ligne
If Left (ligne,6)="<body>" Then
corps=True 'On est dans le corps du html
EndIf
If corps Then Print #2, ligne
Loop
Print #2, separator
Close #1
Fich = Dir
Loop
Close #2
End Sub
Avec quelques modifs, ci-dessous le résultat du code opérationnel du code. Bye
Sub copy_files_into_other_file()
' récupère certains contenus (entre des "mots clefs") de fichiers situés dans un même répertoire
' pour les concaténer dans un seul fichier
' Variables communes
Dim Fich, separateur_Champs, Separator As String
'variables du corps
Dim corps As String
Dim debut_corps, fin_corps As Long
' variable des anima
Dim ref As String
Dim debut_ref, fin_ref As Long 'variables des animateurs
Dim i As Long
Separator = "*********************" 'séparateur entre deux fichiers
separateur_Champs = "||" ' séparateur entre 2 champs dans un même fichier
Chemin = "d:\tmp\geo\site\"
Open "d:\tmp\geo\extract\copie.txt" For Output As #2
Fich = Dir(Chemin & "art*")
Do While Fich <> ""
Open Chemin & Fich For Input As #1
i = i + 1
Do While Not EOF(1)
Line Input #1, ligne
If ligne <> "" Then
' copie des références
debut_ref = (InStr(ligne, "<!-- navigation : Les données sur l'article -->")) + 56
fin_ref = (InStr(ligne, "<!-- version imprimable -->"))
ref = Mid(ligne, debut_ref, (fin_ref - debut_ref))
' copie du corps du texte
debut_corps = (InStr(ligne, "<!-- corps de l'article -->")) + 32
fin_corps = (InStr(ligne, "<!-- Post scriptum -->"))
corps = Mid(ligne, debut_corps, (fin_corps - debut_corps))
' concaténation références & corps
ligne = separateur_Champs & ref & vbCrLf & separateur_Champs _
& corps & vbCrLf
End If
Loop
Print #2, Separator & " " & i & vbCrLf & ligne
Close #1
Fich = Dir
Loop
Close #2
End Sub