Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: .txt mit VBA in Tabelle importieren

.txt mit VBA in Tabelle importieren
30.05.2024 14:47:52
DerWolle
Moin zusammen. Ich brauche Hilfe ...

Ich möchte in eine Exceltabelle über VBA eine .txt per Auswahl ab Zelle B2 einlesen, welche in einem Ordner mit mehreren txt Dateien liegt. Die Formatierung aller Zellen muss als Text erfolgen.

Bisher habe ich es in Exceltabelle über Daten/Externe Daten abrufen und dem TextkonvertierungsAssi gemacht. Aber mit einem Macro müsste es doch einfacher gehen.

Mag mir jemand helfen? Ich finde nichts und Erfahrung in VBA ist schon etwas her.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .txt mit VBA in Tabelle importieren
30.05.2024 14:55:30
Eifeljoi 5
Hallo

Warum VBA?
txt Dateien liest man mit Power Query ein.
AW: .txt mit VBA in Tabelle importieren
30.05.2024 15:19:12
daniel
Hi
Wenn du die Datei einmal importiert und dabei im Assi alles eingestellt hast, dann kannst du diesen Import auch aktualisieren (findest du im Kontextmenü, wenn du auf den Importbereich klickst.)
Dabri werden die bereits gemachten Einstellungen übernommen, so dass du einfach OK drücken kannst ohne alles neu einzustellen.

Ob du dabei die Datei neu auswählen willst oder ob die selbe Datei nochmal eingelesen wird, kannst du auch in den Eigenschaften des Imports einstellen.
Da kannst du auch festlegen, ob die Aktualisierung auch automatisch ausgeführt werden soll, bspw nach zeitintervall oder beim Öffnen

Ein Makro braucht man da eigentlich nicht.

Gruß Daniel
Anzeige
AW: .txt mit VBA in Tabelle importieren "UPDATE"
30.05.2024 19:54:27
DerWolle
Ich habe jetzt einen Code gefunden der auch sehr gut das abdeckt was ich möchte. Nur werden das ÄÜü usw nicht richtig dargestellt. Ich müsste wohl den UniCode einstellen, aber weiß nicht wie das geht in dem Code. Jemand eine Lösung für mich?

Sub TXT_Import()

Dim xFilesToOpen As Variant
Dim xFile As Variant
Dim xWb As Workbook
Dim xTempWb As Workbook
Dim xDelimiter As String
Dim xScreen As Boolean
On Error GoTo ErrHandler
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
'Ziel-Datei suchen/Setzen
Set xWb = ActiveWorkbook
GoTo Weiter1
'Alternative zur Bestimmung der Ziel-Datei
For Each xWb In Application.Workbooks
If xWb.Worksheets(1).Name = "Ursprungsdaten" Then Exit For
Next
If xWb Is Nothing Then
MsgBox "Es ist keien Arbeitsmappe mit dem Blatt ""Ursprungsdaten"" geöffnet", vbOKOnly
Exit Sub
GoTo ExitHandler
End If
Weiter1:
'Textdateien auswählen
xDelimiter = "|"
xFilesToOpen = Application.GetOpenFilename(Filefilter:="Text Files (*.txt), *.txt", _
Title:="TXT Dateien auswählen ", MultiSelect:=True)
If TypeName(xFilesToOpen) = "Boolean" Then
MsgBox "Es wurden keine TXT Dateien ausgewählt!", vbCritical, "Error!"
GoTo ExitHandler
End If
'Textdateien abarbeiten
For Each xFile In xFilesToOpen
'Texdatei schreibgeschützt öffnen und aufbereiten
Set xTempWb = Workbooks.Open(xFile, ReadOnly:=True)
xTempWb.Worksheets(1).Columns("A:A").TextToColumns _
Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, _
Other:=False, OtherChar:=xDelimiter
'aufbereitetes Tabellenblatt in Zieldatei kopieren
With xWb
xTempWb.Sheets(1).Copy After:=.Sheets(.Sheets.Count)
End With
'Textdatei ohne speichern schliessen
xTempWb.Close False
Set xTempWb = Nothing
Next xFile
ExitHandler:
Application.ScreenUpdating = xScreen
Set xWb = Nothing
Exit Sub
ErrHandler:
MsgBox "Fehler-Nr.: " & Err.Number & vbLf & Err.Description, , "Error!"
Resume ExitHandler
End Sub
Anzeige
AW: .txt mit VBA in Tabelle importieren
30.05.2024 21:15:31
DerWolle
Hallo. Vielen Dank, aber das hat nicht geholfen ... oder ich verstehe das nicht.
AW: .txt mit VBA in Tabelle importieren "UPDATE"
30.05.2024 20:45:52
daniel
Hi

Verwende statt Workbooks.Open + TextToColmns
Den Befehl Workbooks.Opentext
https://learn.microsoft.com/de-de/office/vba/api/excel.workbooks.opentext

Das ist Datei öffen und TextInSpalten in einem Schritt.
Dabei hast du zusätzlich den Parameter Origin, mit welchem du angeben kannst, aus welcher Quelle die Daten stammen. Hier musst du die passende auswählen, damit Umlaute und ähnliches richtig übernommen werden.

Gruß Daniel
Anzeige
AW: .txt mit VBA in Tabelle importieren "UPDATE"
03.06.2024 18:33:50
Oppawinni
Du müsstest da vielleicht nur das richtige Encoding haben...
Workbooks.Open(xFile, ReadOnly:=True, Origin:=65001)
wäre UTF-8.. keine Ahnung, wie dein Sourcefile aussieht, mit welcher Einstellung machst du das zu Fuß ?
AW: .txt mit VBA in Tabelle importieren "UPDATE"
30.05.2024 21:01:17
daniel
Hi

Wenn das mit dem OpenText und dem Origin nicht klappt, kannst du auch so vorgehen:

Lege dir in der Makrodatei eine kleine Hilfstabelle an, in die erste Spalte schreibst du die Zeichenfolge, die statt dem Umlaut angezeigt wird und in die Spalte daneben den Umlaut,den du haben willst.

Ergänze dann das Makro um folgendes nach dem TextToColumns:

Dim Zelle as Range

...
For each Zelle in ThisWorkbook.Sheets(...).Range(...) '--- Hilfstabelle Umlauttausch
xTempWb.Sheets(1).Cells.Replace Zelle.Value, Zelle.offset(0, 1).value, lookat:=xlpart, matchcase:=true
Next


Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige