Supprimez plusieurs en-têtes après l'import de files csv dans Excel

J'ai besoin de combiner des centaines de files csv avec le même format à un sans avoir des en-têtes en double utilisant un excellent makro. Je peux sélectionner les files que je veux importer (et les importer) avec le code suivant:

Dim dateien, i, lastrow lastrow = 1 dateien = Application.GetOpenFilename _ ("csv-Dateien (*.csv), *.csv", MultiSelect:=True) If IsArray(dateien) Then For i = 1 To UBound(dateien) Workbooks.Open dateien(i), local:=True With ThisWorkbook.Sheets(1) ActiveSheet.UsedRange.Copy Destination:=.Range("A" & lastrow) lastrow = .UsedRange.Rows.Count + 1 End With ActiveWorkbook.Close False Next i End If 

Cependant, je n'ai pas vraiment l'indice de supprimer les en-têtes en double …

Je prendrais l'approche d'ouvrir chaque file dans FileSystemObject , en lisant toutes ses données et en le renvoyant sans les en-têtes moi-même:

 Dim dateien, i, lastrow lastrow = 1 dateien = Application.GetOpenFilename _ ("csv-Dateien (*.csv), *.csv", MultiSelect:=True) dim oFso : Set oFso = CreateObject("Scripting.FileSystemObject") Dim oSourceFile, oTargetFile Set oTargetFile = oFso.CreateTextFile("pathtofilehere", True) Dim sArray() If IsArray(dateien) Then For i = 1 To UBound(dateien) ' Arrays in VBA index from zero, not 1 - you're skipping the first element in dateien ReDim sArray(0) Set oSourceFile = oFso.OpenTextFile(dateien(i), 1) ' open for reading While Not oSourceFile.AtEndOfStream ' while there is data in the file sArray(Ubound(sArray)) = oSourceFile.ReadLine ' add the line to an array ReDim Preserve sArray(UBound(sArray)+1) ' increase size of the array by 1 Wend ' Now we have the whole file in an array For myLoop = 1 to UBound(sArray) ' Loop from 1 and we skip the header line in the file oTargetFile.WriteLine sArray(myLoop) ' write array values into file Next myLoop ' repeat for each line in the array Next i ' repeat for each file in dateien End If