2016-06-06 3 views
-3

Ich versuche, ein Makro zu machen, das auf alle TXT-Dateien in einem bestimmten Verzeichnis ausführen wird. Ich möchte, dass die erste Zeile in die erste Zelle (A1) kopiert wird. Und dann möchte ich, dass der Rest des Inhalts in B1 eingefügt wird.Microsoft Excel-Makro: Bulk Lesen und Schreiben der ersten Zeile und Rest der Datei

Das Makro würde das für alle TXT-Dateien in einem Verzeichnis durchführen, es sei denn, es zu A2 gehen würde, B2 ... A3, B3 usw.

Kann jemand helfen?

Antwort

1

Dies sollte für Sie arbeiten.

Sub Mrig_GettxtData() 
    Dim strFile As String, strPath As String, MyData As String, tempStr As String 
    Dim filePath As Variant 
    Dim strData() As String 
    Dim lineNo As Long 
    Dim myCell As Range 

    strPath = "C:\test_folder\test" '--> write your path here (without "\") 
    filePath = strPath & "\" 
    Set myCell = ThisWorkbook.Sheets("Sheet1").Range("A1") '-->change Sheet1 as required 

    strFile = Dir(filePath & "*.txt") 
    Do While Len(strFile) > 0 
     Open filePath & strFile For Binary As #1 
     MyData = Space$(LOF(1)) 
     Get #1, , MyData 
     Close #1 
     strData() = Split(MyData, vbCrLf) 

     lineNo = 0 
     tempStr = "" 
     For Each a In strData 
      lineNo = lineNo + 1 
      If lineNo = 1 Then 'tempStr = "" Then 
       myCell.Value = a 
       Set myCell = myCell.Offset(0, 1) 
      ElseIf lineNo = 2 Then 
       tempStr = a 
      Else 
       tempStr = tempStr & vbCrLf & a 
      End If 
     Next 
     If lineNo <> 1 Then 
      myCell.Value = tempStr 
      Set myCell = myCell.Offset(1, -1) 
     End If 
     strFile = Dir() 
    Loop 
End Sub 
1

Versuchen Sie dies. Dadurch werden alle ".txt" -Dateien in einem Ordner durchlaufen. In diesem Fall ist es "H: \ data \" in alphabetischer Reihenfolge. Leere Textdateien werden übersprungen. Die ersten beiden Zeilen werden vom ersten Blatt ausgefüllt (oder Tab) der Arbeitsmappe in dem das Makro gespeichert wird

Sub readLine() 
    Dim FileNum As Integer 
    Dim DataLine As String 
    Dim strTXTFile As String, strFileSpec As String 

    strFileSpec = "*.txt" 
    strFilePath = "D:\data\" 

    'set starting rng where data will be saved 
    Set Rng = ThisWorkbook.Sheets(1).Range("A1") 

    strTXTFile = Dir(strFilePath & strFileSpec) 
    Do While strTXTFile <> "" 
     ILine = 1 
     FileNum = FreeFile() 
     Open strFilePath & strTXTFile For Input As #FileNum 
     If EOF(FileNum) Then GoTo skipFile 
     Line Input #FileNum, DataLine 'save the first line of the document into variable DataLine 
     Rng.Value = DataLine 
     Do Until EOF(FileNum) 
      Line Input #FileNum, DataLine 'save the first line of the document into variable DataLine 
      Rng.Offset(, 1).Value = Rng.Offset(, 1).Value & DataLine 
     Loop 
     Set Rng = Rng.Offset(1) 
skipFile: 
     Close #FileNum 
     strTXTFile = Dir 
    Loop 
End Sub 
+0

leider, das nicht funktionierte, habe ich ein Makro den genauen Code verwenden Sie hatten, aber es hat nicht funktioniert. Irgendwelche Empfehlungen? – Matt

+0

nach der ersten Zeile haben meine Textdateien Leerzeichen und leere Zeilen für Absätze usw., ist das wichtig? – Matt

+0

ab sofort druckt es nur alle th Die ersten Zeilen aller Dateien. A1, A2, B1, B2 etc. – Matt

Verwandte Themen