Ich habe mehrere TXT-Dateien in einem Ordner, die Tabulator-getrennt sind. Jede dieser Dateien hat eine Spalte namens EngagementId, die unabhängig von der Anzahl der Datensätze den gleichen Wert hat. Es ändert sich jedoch für jede TXT-Datei, die ich erfassen möchte.Lese nur einen Datensatz von mehreren Textdateien in Excel mit VBA
- Ich versuche, den Dateinamen in der ersten Zeile zu erhalten. Die GetFileNames() funktioniert für die (wie in den Kommentaren darauf hingewiesen)
Sub GetFileNames()
Dim sPath As String
Dim sFile As String
Dim iRow As Integer
Dim iCol As Integer
Dim splitFile As Variant
'specify directory to use - must end in "\"
sPath = ActiveWorkbook.Path
iRow = 0
sFile = Dir(sPath & "\Individual Reports\")
Do While sFile <> ""
iRow = iRow + 1
splitFile = Split(sFile, ".txt")
For iCol = 0 To UBound(splitFile)
Sheet1.Cells(iRow, iCol + 1) = splitFile(iCol)
Next iCol
sFile = Dir ' Get next filename
Loop
End Sub
eine Spalte Jede dieser txt-Dateien haben (die in jedem der Textdateien in der 13. Position ist), "EngagementId" genannt. Ich möchte nur die erste "Engagement Id" ziehen, die aus der 2. Zeile stammt (da die erste Zeile Header enthält).
Sub Extractrec()
Dim filename As String, nextrow As Long, MyFolder As String
Dim MyFile As String, text As String, textline As String
MyFolder = ActiveWorkbook.Path
MyFile = Dir(MyFolder & "\Individual Reports\*.txt")
Do While MyFile <> ""
Open (MyFolder & MyFile) For Input As #1
Do Until EOF(1)
Line Input #1, LineFromFile
LineItems = Split(LineFromFile, "\t") 'second loop text is already stored
'-> see reset text
Sheet1.Cells(iRow, iCol + 2).Value = LineItems(13, 2)
Loop
Close #1
Loop
Was ist das Problem? Ich bin nicht sicher, dass "\ t" in vba funktioniert, ich würde vbtab constant verwenden. – Jules
Was zeigen Sie uns - haben Sie Code, der nicht so funktioniert, wie Sie es wollen - was spuckt er jetzt aus - und wie sollte sich das ändern? Beispieldaten helfen - sind diese zwei separaten Funktionen, die von woanders aufgerufen werden? – dbmitch
'Sheet1.Cells (iRow, iCol + 2) .Value = LineItems (13, 2)' wird ein Index außerhalb des Bereichsfehler sein - 'Split' gibt ein eindimensionales Array zurück. – Comintern