Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Txt files Importieren

VBA-Txt files Importieren
22.01.2016 10:37:00
Klausti
Servus,
ich habe eine Frage an die Profis ;) (der Code ist ebenfalls aus dem Netz)
Ich habe die Frage schon woanderst gestellt aber leider keine Antwort bekommen.
Ich möchte *.txt dateien aus einem Verzeichnis Importieren auf Sheet 2.
Diese Dateien sind aber in Unterschiedlichen Ordnern.
Fix ist der Hauptordner, die Unterorder sind Variable haben aber eine Bekannte Konstante, z.b. xa-1-zb sd-2-sd dabei ist immer das zwischen den beiden - bekannt.
Ich dachte nun könnte man eventuell auf Sheet 1 die Zahl eintragen der dann beim VBA für das Importverfahren genutzt wird.
Leider kenne ich mich nicht wirklich in VBA aus, könnte mir da jemand helfen?
Option Explicit
Private Const sSheetName = "Sheet2"
Sub Input_Files_From_Test1()
Dim oFso As Object, oFile As Object
Set oFso = CreateObject("Scripting.FileSystemObject")
Application.ScreenUpdating = False
For Each oFile In oFso.GetFolder(ThisWorkbook.Path).Files
If LCase(oFso.GetExtensionName(oFile.Name)) = "txt" Then
Call TextImport(oFile.Path)
End If
Next
Application.ScreenUpdating = True
End Sub
Private Sub TextImport(ByRef sFileName)
Dim iRowNext As Long
With Sheets(sSheetName)
iRowNext = .Cells(.Rows.Count, "A").End(xlUp).Row
If Not IsEmpty(.Range("A1")) Then
iRowNext = iRowNext + 1
End If
With .QueryTables.Add(Connection:="TEXT;" & sFileName, Destination:=.Cells(iRowNext, "A" _
))
.AdjustColumnWidth = True  'Spaltenbreite automatisch anpassen True/False
.TextFilePlatform = 1252
.TextFileTextQualifier = xlTextQualifierNone
.TextFileParseType = xlDelimited
.TextFileSemicolonDelimiter = True
.TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
.Refresh BackgroundQuery:=False
.Delete
End With
End With
End Sub

Mit freundlichen Grüßen
Klausti

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Txt files Importieren
22.01.2016 11:25:01
Rudi
Hallo,
die Zahl auf Blatt1!A1
Sub Input_Files_From_Test1()
Dim oFso As Object, oFile As Object, oFolder As Object
Dim sMainFolder As String
sMainFolder = ThisWorkbook.Path
Set oFso = CreateObject("Scripting.FileSystemObject")
Application.ScreenUpdating = False
For Each oFolder In oFso.getfolder(sMainFolder).SubFolders
If oFolder Like "*?-" & Sheets(1).Cells(1, 1) & "-?" Then
For Each oFile In oFolder.Files
If LCase(oFso.GetExtensionName(oFile.Name)) = "txt" Then
Call TextImport(oFile.Path)
End If
Next
End If
Next
Application.ScreenUpdating = True
End Sub
Gruß
Rudi

Anzeige
AW: VBA-Txt files Importieren
22.01.2016 11:31:25
Klausti
Servus,
danke schonmal.
Wie muss es aussehen wenn die Excel nicht im entsprechenden Ordner liegt sondern an einem anderen Ort? Wie kann ich das Hauptverzeichnis definieren?
Vielen Dank!
Klausti

sMainFolder="c:\Test\DeinPfad" owT
22.01.2016 11:36:06
Rudi

AW: sMainFolder="c:\Test\DeinPfad" owT
22.01.2016 14:09:41
Klausti
Vielen Dank! Das klappt Prima :)
jetzt habe ich festgestellt das er mir natürlich auch immer den Kopfsatz mit Importiert.
Gibt es eine Möglichkeit die Kopfzeilen nicht zu Importieren oder diese einfach am ende rauszulöschen?
mit der Funktion Makro aufzeichnen kam das heraus:
Sub test()
Cells.Select
ActiveSheet.Range("$A$1:$L$8").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, _
8, 9, 10, 11, 12), Header:=xlNo
End Sub
muss ich irgenwo noch einbauen das er das als nächstest tut.
Ich habe versucht im vorherigen Absatz:
.Delete
Call test()
End With
Einzubauen das scheint aber nicht zu klappen.
Gruß Klausti

Anzeige
AW: sMainFolder="c:\Test\DeinPfad" owT
22.01.2016 15:51:55
Klausti
Sry für Spam, hab den haken voher vergessen.

.TextFileStartRow = 2
24.01.2016 19:01:26
Michael
Hi Klausti,
Du fügst in Deiner Sub TextImport die Zeile
.TextFileStartRow = 2
' direkt vor:
.TextFileParseType = xlDelimited

ein.
Schöne Grüße,
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige