Passer au contenu principal

Comment importer rapidement par lots plusieurs fichiers csv / texte / xml dans Excel?

Dans Excel, vous avez peut-être lié pour enregistrer un classeur en tant que fichier csv, fichier texte ou fichier xml, mais avez-vous déjà essayé d'importer plusieurs fichiers csv / texte / xml d'un dossier dans un classeur ou une feuille de calcul? Dans cet article, je présente quelques méthodes pour les importer rapidement par lots.

Importer plusieurs fichiers texte d'un dossier dans chaque feuille de calcul d'un classeur avec VBA

Importez plusieurs fichiers csv d'un dossier dans une seule feuille avec VBA

Importez plusieurs fichiers xml d'un dossier dans une seule feuille avec VBA

Importez ou combinez plusieurs fichiers XML/csv dans une feuille ou un classeur avec Kutools for Excel bonne idée3

Exportez chaque feuille au format csv/text/pdf vers un dossier avec Kutools for Excelbonne idée3


Pour importer des fichiers texte d'un dossier vers un classeur, vous pouvez utiliser ci-dessous VBA pour le gérer rapidement.

1. Activez un classeur vierge et appuyez sur Alt + F11 clés pour ouvrir Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Moduleet collez le VBA dans le Module fenêtre.

VBA: importer tous les fichiers texte d'un dossier dans un classeur

Sub LoadPipeDelimitedFiles()
'UpdatebyKutoolsforExcel20151214
    Dim xStrPath As String
    Dim xFileDialog As FileDialog
    Dim xFile As String
    Dim xCount As Long
    On Error GoTo ErrHandler
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Select a folder [Kutools for Excel]"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    Application.ScreenUpdating = False
    xFile = Dir(xStrPath & "\*.txt")
    Do While xFile <> ""
        xCount = xCount + 1
        Sheets(xCount).Select
        With ActiveSheet.QueryTables.Add(Connection:="TEXT;" _
          & xStrPath & "\" & xFile, Destination:=Range("A1"))
            .Name = "a" & xCount
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 437
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileOtherDelimiter = "|"
            .TextFileColumnDataTypes = Array(1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
            xFile = Dir
        End With
    Loop
    Application.ScreenUpdating = True
    Exit Sub
ErrHandler:
    MsgBox "no files txt", , "Kutools for Excel"
End Sub

3. presse F5 clé ou Courir pour exécuter le VBA et sélectionnez un dossier à partir duquel vous souhaitez importer les fichiers texte dans la boîte de dialogue contextuelle. Voir la capture d'écran:

doc importer plusieurs textes csv xml 1

4. Et cliquez sur OKet chaque fichier texte du dossier sélectionné a été importé dans une feuille de calcul du classeur actif. Voir la capture d'écran:

doc importer plusieurs textes csv xml 2doc importer plusieurs textes csv xml 3

Combinez facilement plusieurs feuilles / classeurs en une seule feuille ou classeur

Combiner plusieurs feuilles ou classeurs dans une feuille ou un classeur peut être édifiant dans Excel, mais avec le Combiner fonction dans Kutools pour Excel, vous pouvez combiner la fusion de dizaines de feuilles/classeurs en une seule feuille ou un seul classeur, vous pouvez également consolider les feuilles en une seule en plusieurs clics seulement.  Cliquez pour un essai gratuit complet de 30 jours !
combiner des feuilles
 
Kutools for Excel : avec plus de 300 compléments Excel pratiques, à essayer gratuitement et sans limitation dans 30 jours.

Pour importer tous les fichiers csv d'un dossier dans une seule feuille, vous pouvez utiliser le code VBA ci-dessous.

1. Activez une feuille de calcul vierge et appuyez sur Alt + F11 clés pour ouvrir Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Module, et collez sous VBA dans le nouveau Module fenêtre.

VBA: importer des fichiers csv d'un dossier dans une feuille de calcul

Sub ImportCSVsWithReference()
'UpdatebyKutoolsforExcel20151214
    Dim xSht  As Worksheet
    Dim xWb As Workbook
    Dim xStrPath As String
    Dim xFileDialog As FileDialog
    Dim xFile As String
    On Error GoTo ErrHandler
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Select a folder [Kutools for Excel]"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    Set xSht = ThisWorkbook.ActiveSheet
    If MsgBox("Clear the existing sheet before importing?", vbYesNo, "Kutools for Excel") = vbYes Then xSht.UsedRange.Clear
    Application.ScreenUpdating = False
    xFile = Dir(xStrPath & "\" & "*.csv")
    Do While xFile <> ""
        Set xWb = Workbooks.Open(xStrPath & "\" & xFile)
        Columns(1).Insert xlShiftToRight
        Columns(1).SpecialCells(xlBlanks).Value = ActiveSheet.Name
        ActiveSheet.UsedRange.Copy xSht.Range("A" & Rows.Count).End(xlUp).Offset(1)
        xWb.Close False
        xFile = Dir
    Loop
    Application.ScreenUpdating = True
    Exit Sub
ErrHandler:
    MsgBox "no files csv", , "Kutools for Excel"
End Sub

3. presse F5 touche ou cliquez Courir pour exécuter le VBA, et une boîte de dialogue apparaît pour sélectionner un dossier à partir duquel vous souhaitez importer tous les fichiers csv. Voir la capture d'écran:

doc importer plusieurs textes csv xml 4

4. Cliquez OK, et une boîte de dialogue apparaît pour vous rappeler si effacer le contenu de la feuille de calcul active avant l'importation, ici je clique Oui. Voir la capture d'écran:

doc importer plusieurs textes csv xml 5

Après avoir cliqué Oui, tous les fichiers csv du dossier sélectionné sont importés dans la feuille actuelle et placent les données de la colonne A vers la droite. Voir la capture d'écran:

doc importer plusieurs textes csv xml 6doc importer plusieurs textes csv xml 7

Conseil: Si vous souhaitez placer des fichiers csv horizontalement dans une feuille de calcul, vous pouvez utiliser ci-dessous VBA.

Sub ImportCSVsWithReferenceI()
'UpdatebyKutoolsforExcel20151214
    Dim xSht  As Worksheet
    Dim xWb As Workbook
    Dim xStrPath As String
    Dim xFileDialog As FileDialog
    Dim xFile As String
    Dim xCount As Long
    On Error GoTo ErrHandler
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Select a folder [Kutools for Excel]"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    Set xSht = ThisWorkbook.ActiveSheet
    If MsgBox("Clear the existing sheet before importing?", vbYesNo, "Kutools for Excel") = vbYes Then
        xSht.UsedRange.Clear
        xCount = 1
    Else
        xCount = xSht.Cells(3, Columns.Count).End(xlToLeft).Column + 1
    End If
    Application.ScreenUpdating = False
    xFile = Dir(xStrPath & "\" & "*.csv")
    Do While xFile <> ""
        Set xWb = Workbooks.Open(xStrPath & "\" & xFile)
        Rows(1).Insert xlShiftDown
        Range("A1") = ActiveSheet.Name
        ActiveSheet.UsedRange.Copy xSht.Cells(1, xCount)
        xWb.Close False
        xFile = Dir
        xCount = xSht.Cells(3, Columns.Count).End(xlToLeft).Column + 1
    Loop
    Application.ScreenUpdating = True
    Exit Sub
ErrHandler:
    MsgBox "no files csv", , "Kutools for Excel"
End Sub 

doc importer plusieurs textes csv xml 8


Si vous souhaitez importer tous les fichiers XML d'un dossier dans une seule feuille, vous pouvez utiliser le code VBA ci-dessous.

1. Sélectionnez une feuille vierge dans laquelle placer les données importées et appuyez sur Alt + F11 clés pour activer Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Module, collez le code VBA dans le Module fenêtre.

VBA: importez des fichiers XML d'un dossier dans une feuille de calcul.

Sub From_XML_To_XL()
'UpdatebyKutoolsforExcel20151214
    Dim xWb As Workbook
    Dim xSWb As Workbook
    Dim xStrPath As String
    Dim xFileDialog As FileDialog
    Dim xFile As String
    Dim xCount As Long
    On Error GoTo ErrHandler
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Select a folder [Kutools for Excel]"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    Application.ScreenUpdating = False
    Set xSWb = ThisWorkbook
    xCount = 1
    xFile = Dir(xStrPath & "\*.xml")
    Do While xFile <> ""
        Set xWb = Workbooks.OpenXML(xStrPath & "\" & xFile)
        xWb.Sheets(1).UsedRange.Copy xSWb.Sheets(1).Cells(xCount, 1)
        xWb.Close False
        xCount = xSWb.Sheets(1).UsedRange.Rows.Count + 2
        xFile = Dir()
    Loop
    Application.ScreenUpdating = True
    xSWb.Save
    Exit Sub
ErrHandler:
    MsgBox "no files xml", , "Kutools for Excel"
End Sub

3. Cliquez Courir bouton ou F5 clé pour exécuter le VBA et sélectionnez un dossier dans la boîte de dialogue contextuelle, voir capture d'écran:

doc importer plusieurs textes csv xml 9

4. Cliquez OKet tous les fichiers XML du dossier sélectionné sont importés dans la feuille active.


Si vous n'êtes pas familier avec VBA, ne vous inquiétez pas, je vous présente ici un outil pratique - Kutools for Excel pour vous. Avec son puissant Combiner utilitaire, vous pouvez rapidement combiner plusieurs fichiers xml ou csv dans un classeur ou une feuille Excel.

Kutools for Excel, avec plus de 300 fonctions pratiques, rend vos travaux plus faciles. 

Après l'installation de Kutools for Excel, procédez comme suit:(Téléchargez gratuitement Kutools pour Excel maintenant!)

1. Activez Excel et cliquez sur Kutools Plus > Combiner. Voir la capture d'écran :
doc combiner 1

2. Et dans le étape 1 de la combinaison boîte de dialogue, choisissez une option de séparation selon vos besoins. Voir la capture d'écran:
doc combiner 2

3. Cliquez Suivant aller à étape 2 de la moissonneuse-batteusecliquez Ajouter pour ajouter des fichiers de divers dossiers ou fichiers d'un dossier à Classeur liste, et vous pouvez également spécifier les feuilles que vous souhaitez combiner à partir de Feuille liste de la section de droite. Voir la capture d'écran:
doc kutools combiner des feuilles 3

4. Cliquez Suivant à la dernière étape de Combiner, et vous pouvez spécifier les options de combinaison.
doc kutools combiner des feuilles 4

5. Cliquez Finition, une boîte de dialogue apparaît pour vous rappeler de sélectionner un emplacement pour enregistrer le nouveau résultat combiné. Voir la capture d'écran:
doc combiner 5

6. Cliquez Épargnez. Toutes les feuilles d'ajout ont été combinées en une nouvelle feuille unique.
doc combiner 6

Conseil: Avec Combiner, vous pouvez également combiner plusieurs des fichiers CSV former plusieurs dossiers ou un dossier dans une feuille ou un classeur.


Si vous souhaitez exporter chaque feuille sous forme de fichier csv / texte / pdf vers un dossier, Kutools for Excel's Classeur fractionné l'utilité peut vous rendre service.

Après installation gratuite Kutools for Excel, procédez comme suit:

1. Activez le classeur pour lequel vous souhaitez exporter ses feuilles de calcul, puis cliquez sur Kutools Plus > Classeur > Classeur fractionné. Voir la capture d'écran:

doc importer plusieurs textes csv xml 10

2. dans le Classeur fractionné , vous pouvez vérifier les noms de feuilles que vous devez exporter, par défaut toutes les feuilles sont cochées et cocher Spécifiez le format d'enregistrement et sélectionnez le format de fichier que vous souhaitez enregistrer dans la liste déroulante ci-dessous. Voir la capture d'écran:

doc importer plusieurs textes csv xml 11

3. Cliquez Diviser et sélectionnez un dossier pour enregistrer les fichiers fractionnés dans le Rechercher un dossier dialogue, voir capture d'écran:

doc importer plusieurs textes csv xml 12

4. Cliquez OK, maintenant toutes les feuilles cochées sont exportées en tant que nouveau format de fichier dans le dossier sélectionné.


Articles relatifs:

Meilleurs outils de productivité bureautique

🤖 Aide à l'IA Kutools: Révolutionner l'analyse des données en s'appuyant sur : Exécution intelligente   |  Générer du code  |  Créer des formules personnalisées  |  Analyser les données et générer des graphiques  |  Invoquer les fonctions Kutools...
Caractéristiques populaires: Rechercher, mettre en évidence ou identifier les doublons   |  Supprimer les lignes vides   |  Combinez des colonnes ou des cellules sans perdre de données   |   Tour sans formule 
Super recherche: VSearchup à critères multiples    VSearch à valeurs multiples  |   Recherche virtuelle sur plusieurs feuilles   |   Recherche floue ....
Liste déroulante avancée: Créez rapidement une liste déroulante   |  Liste déroulante dépendante   |  Liste déroulante à sélection multiple ....
Gestionnaire de colonnes: Ajouter un nombre spécifique de colonnes  |  Déplacer les colonnes  |  Basculer l'état de visibilité des colonnes masquées  |  Comparer les plages et les colonnes 
Caractéristiques en vedette: Mise au point de la grille   |  Voir Design   |   Grande barre de formule    Gestionnaire de classeurs et de feuilles   |  Centre de ressources (Texte automatique)   |  Sélecteur de date   |  Combiner des feuilles de travail   |  Crypter/déchiffrer les cellules    Envoyer des e-mails par liste   |  Super filtre   |   Filtre spécial (filtre gras/italique/barré...) ...
Les 15 meilleurs ensembles d'outils12 Texte Outils (Ajouter du texte, Supprimer les caractères, ...)   |   50+ Graphique Types (Diagramme de Gantt, ...)   |   40+ Pratique Formules (Calculer l'âge en fonction de l'anniversaire, ...)   |   19 Insertion Outils (Insérer le code QR, Insérer une image à partir du chemin, ...)   |   12 Conversion Outils (Nombres en mots, Conversion des devises, ...)   |   7 Fusionner et fractionner Outils (Lignes de combinaison avancées, Cellules divisés, ...)   |   ... et plus

Améliorez vos compétences Excel avec Kutools for Excel et faites l'expérience d'une efficacité comme jamais auparavant. Kutools for Excel offre plus de 300 fonctionnalités avancées pour augmenter la productivité et gagner du temps.  Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...

Description


Office Tab apporte une interface à onglets à Office et facilite grandement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
Comments (36)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Bagaimana caranya menghilangkan header dari tiap-tiap file csv yang terbuka dalam worksheetnya
terima kasih
This comment was minimized by the moderator on the site
Hi there,this is a great tool, but I want to import the various XMl-Files into separate TAB-sheets. Is this possible as the XML's have different header ?
This comment was minimized by the moderator on the site
HelloThe instructions for importing multiple xmls into one tab of an excel document works but was wondering how to get it to line up the columns. My xmls don't all have the same tags. They are set up such that if the xml had no data for some headers(tags) then the header is missing from that xml. Is there a way to get the xmls to import so the same headers from each xml and associated data fall into the same column of excel?
This comment was minimized by the moderator on the site
Hi Experts

I am using the above code for importing multiple xml files into 1 worksheet using VBA however issue i am facing is when rows count reaches 650000 in a worksheet then this code doesn't process rest of the xml files in the folder. It gives an error "no files.xml". Require your kind support
This comment was minimized by the moderator on the site
Hi Team

I am using the code for importing Multiple XML files into single sheet with VBA however issue i am facing is when rows count reaches approximately 650000, then it doesn't processes rest of the xml files in the folder and gives an error that no xml files. Need your support to increase this count.
This comment was minimized by the moderator on the site
Hi, is there any way to import multiple csv files with semicolon as separator? Thank you!
PS Nice article!
This comment was minimized by the moderator on the site
Hello - I've used your VBA codes to extract data from multiple CSV files to excel file (the code on this page) and convert csv files to excel files ( this one: https://www.extendoffice.com/documents/excel/4615-excel-batch-convert-csv-to-xls-xlsx.html), with great results. They helped me save a lot of time.

However, I notice a common problem with both of these types of codes. To clarify, my system is set up to use the European standards for dates, while some of the CSV files I received for my work contain dates in US standards. The first problem is, when I extract or convert data from a CSV file that contains dates in US format, all of those dates are reversed (matching the EU standards used by my system). This is great but it also caused me troubles since I didn't know the codes would reverse the dates for me, so I went on ahead and did the same thing again. The second problem is, for the CSV files that contain dates already in the same format as the one used by my system (EU standards), only the ambiguous dates are reversed (i.e 04/05/2019 - 05/04/2019), while the ones that are too obvious, remain unchanged (i.e 30/04/2019).

What I would like the codes to do, is the exact same thing as they are shown here, only that they should copy and paste the data (especially dates) in the exact formats used in the original files. This would help prevent any possible confusions and mistakes. I would like to learn VBA so I can one day write my own codes, but for now, I'm not even able to modify parts of the existing codes to suit my needs. So if you can help, please tell me where I should put the modified codes (that you come up with) to the existing codes. I appreciate all feedback & support I can get. Thank you all!
This comment was minimized by the moderator on the site
Hi Marshall, in the Workbooks.Open method, add in the option Local:=True.

i.e.
Set xWb = Workbooks.Open(xStrPath & "\" & xFile, Local:=True)
This comment was minimized by the moderator on the site
Hi Robert,
It's me again. It took me a while to actually have the time to figure out which part of the code the "Local:True" part should be added to. The result turned out great as the dates are no longer reversed. Thank you!
For anyone having the same problem, just change this line:
Set xWb = Workbooks.OpenXML(xStrPath & "\" & xFile)

To this:
Set xWb = Workbooks.Open(xStrPath & "\" & xFile, Local:=True)
This comment was minimized by the moderator on the site
Thank you very much Robert. Sorry I couldn't reply to you any earlier. I didn't get any notification until now. I will try this out and come back to you later to let you know if this works.
This comment was minimized by the moderator on the site
Hi - I'm using the import all csv files into one file listed above "Import Multiple Csv Files From A Folder Into A Single Sheet With VBA"- i'd like to define the folder it collects the data from without having to manually choose it. Can this be done? thanks - SW.
This comment was minimized by the moderator on the site
Hi, Scott W, I found a VBA code may can help you.
Option Explicit

Sub ImportCSVsWithReference()
'Author: Jerry Beaucaire
'Date: 10/16/2010
'Summary: Import all CSV files from a folder into a single sheet
' adding a field in column A listing the CSV filenames

Dim wbCSV As Workbook
Dim wsMstr As Worksheet: Set wsMstr = ThisWorkbook.Sheets("Sheet1")
Dim fPath As String: fPath = " C:\Users\DT168\Desktop\New folder\" 'path to CSV files, include the final \
Dim fCSV As String

If MsgBox("Clear the existing sheet before importing?", vbYesNo, "Clear?") _
= vbYes Then wsMstr.UsedRange.Clear

Application.ScreenUpdating = False 'speed up macro

fCSV = Dir(fPath & "*.csv") 'start the CSV file listing

Do While Len(fCSV) > 0
'open a CSV file
Set wbCSV = Workbooks.Open(fPath & fCSV)
'insert col A and add CSV name
Columns(1).Insert xlShiftToRight
Columns(1).SpecialCells(xlBlanks).Value = ActiveSheet.Name
'copy date into master sheet and close source file
ActiveSheet.UsedRange.Copy wsMstr.Range("A" & Rows.Count).End(xlUp).Offset(1)
wbCSV.Close False
'ready next CSV
fCSV = Dir
Loop

Application.ScreenUpdating = True
End Sub
This comment was minimized by the moderator on the site
How to eliminate duplicate header and CSV file name column. Please do help....I have gone through several articles, but unfortunately all give same result.
This comment was minimized by the moderator on the site
Thank you. This site has been a big help. I have one issue I cannot figure out. I am trying to import multiple csv files into an excel separate sheets in excel and have each sheet renamed after the file name of the csv file. I know this was covered below for a txt file but I am working with csv files. Thanks in advance.
This comment was minimized by the moderator on the site
Hi! I used the code to merge multiple XML files into one, but unfortunately the columns got messed up. The 5 files being merged all had the same format. Is there anyway to fix this? I also was wondering if there was a way to get rid of the headers that are duplicated when the files are merged. Thank you!
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations