Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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

TXT-Datei importieren / Zellenformat

TXT-Datei importieren / Zellenformat
27.11.2020 22:50:53
Selma
Hallo Leute,
ich habe eine XLSX-Datei, in der ich in der Zeile 6 die Spalten gewünscht formatiert (Textausrichtung, Farben, Schriftgröße, mache Zellen als Zahl oder Text) habe. Soweit alles in Ordnung.
Wie kann ich bitte per VBA die Inhalte einer TXT-Datei (ab der Zeile 9 bis vorletzter Zeile) in das Exceldokument spaltenweise ab Zelle A6 importieren? Die Inhalte in der Textdatei sind durch ein Semikolon getrennt.
Wichtig: Die Zeile 6 in XLSX soll für die nachfolgende Zeile von der Formatierung her übernommen werden.
Herzlichen Dank im Voraus!
Liebe Grüße
Selma

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TXT-Datei importieren / Zellenformat
28.11.2020 01:36:18
Tino
Hallo,
hier mal eine Variante zum testen.
Die Textdatei wird über ein Dialog erfasst.
Sub ImportTxT()
Dim sFile$, sInhalt$, varInhalt, varRowTxT, ArAusgabe()
Dim c&, r&, F%
'Import ab Zeile
Const AbZeile& = 9
'Auswahl Textfile
sFile = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If sFile = CStr(False) Then Exit Sub
'Textfile einlesen
F = FreeFile
Open sFile For Binary As #F
sInhalt = Space$(LOF(F))
Get #F, , sInhalt
Close
'Text in Zeilen aufteilen
varInhalt = Split(sInhalt, vbCrLf)
If UBound(varInhalt)  "" Then
'Text-Zahlen in Zahl wandeln
If IsNumeric(varRowTxT(c)) Then
ArAusgabe(r - 7, c + 1) = varRowTxT(c) * 1
Else
ArAusgabe(r - 7, c + 1) = varRowTxT(c)
End If
End If
Next
Next
Application.ScreenUpdating = False
Application.EnableEvents = False
With Tabelle1 'Ausgabe Tabelle
.Rows(6).ClearContents 'Inhalt löschen
.Range("A7", .Cells(.Rows.Count, 1)).EntireRow.Delete 'alles löschen
With .Range("A6").Resize(UBound(ArAusgabe), UBound(ArAusgabe, 2))
.Value = ArAusgabe
If .Rows.Count > 1 Then
.Rows(1).Copy
.Rows(2).Resize(.Rows.Count - 1).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End If
End With
Application.Goto .Cells(1, 1), True
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
MsgBox "Import abgeschlossen!", vbInformation
End Sub
Gruß Tino
Anzeige
AW: TXT-Datei importieren / Zellenformat
28.11.2020 12:00:36
Selma
Einen wunderschönen Tag Tino,
zunächst vielen herzlichen Dank für dein Makro, das hilft mir sehr weiter.
Folgende Fragen noch:
1. Wie kann ich bitte einstellen, dass aus der Textdatei von unten aus gesehen, die letzte oder vorletzte Zeile, die in der Regel mit [/Komponenten] endet nicht importiert wird. Diese Zeile beginnt immer mit [/ der Inhalt danach kann abweichen.
2. In der Textdatei in der Zeile die importiert wird steht z.B. eine ID-Nummer wie hier 10068028464992419636 diese wird nach dem Import als 1,0068E+19 angezeigt und in der Bearbeitungszeile in Excel als dies 10068028464992400000. Ich habe die Zelle in Excel als Text formatiert. Das hat nicht geholfen. Evtl. muss ich erstmal alles als Text importieren und dann die Formatierung der Zeile 6 an alle anderen Zeilen übertragen, oder?
3. Die Werte, die in der TXT-Datei vorne Nullen Bsp. 008 haben, werden als 8 importiert.
Lässt sich dies bitte noch beim Import berücksichtigen?
Liebe Grüße,
Selma
Anzeige
AW: TXT-Datei importieren / Zellenformat
28.11.2020 13:00:05
Tino
Hallo,
zu erstens kannst du Mal so versuchen.
In der Zeile For r, am Ende -1 dazu schreiben.
Zu 2. u. 3.
es liegt daran das alles was wie eine Zahl aussieht in eine Zahl umgewandelt wird.
Mach Mal aus der Zeile
ArAusgabe(r - 7, c + 1) = varRowTxT(c) * 1
dieses * 1 raus.
Sollte es nicht gehen, bräuchte ich eine Bsp. Textfile zum testen.
Gruß Tino
AW: TXT-Datei importieren / Zellenformat
28.11.2020 13:54:02
Selma
Hallo lieber Tino,
zu 1: das hat funktioniert. Ich müsste genau überprüfen, ob es -1 oder mehr sind, da die leeren Zeilen am Ende der Textdatei mitgezählt werden. :-) Gerne hätte ich dies dynamisch abgefangen, wenn am Ende dies [/ vorkommt, dann ist dort die Ende (minus diese Zeile). Aber ich kann damit leben, wie es jetzt ist.
zu 2 und 3: Jetzt habe ich so eingetragen: ArAusgabe(r - 7, C + 1) = varRowTxT(C) . Das hat für die Texte bezüglich Nullen erstmal funktioniert, aber nicht für bereits formatierte Zelle als Zahl. Ich meine, dass die Zellen, die vorher wirklich als Zahl formatiert sind mit *1 abgearbeitet werden müssen, oder?
Anbei eine Testdatei XLSM (letzte Fassung) und die dazugehörige TXT-Datei:
https://www.herber.de/bbs/user/141903.xlsm
https://www.herber.de/bbs/user/141904.txt
Liebe Grüße,
Selma
Anzeige
AW: TXT-Datei importieren / Zellenformat
28.11.2020 16:18:24
Tino
Hallo,
mach das -4 bei UBound(varInhalt) - 4 noch einmal raus!
Gruß Tino
AW: TXT-Datei importieren / Zellenformat
28.11.2020 16:22:31
Tino
Hallo,
und noch bei
.Rows(2).Resize(.Rows.Count - 5).PasteSpecial xlPasteFormats
aus der -5 ein -1 machen!
Gruß Tino
AW: TXT-Datei importieren / Zellenformat
28.11.2020 18:09:53
Selma
Hallo Tino,
vielen herzlichen Dank. Das sieht perfekt aus!
Kurze Frage noch: Lässt sich das Wort Komponenten als Wildcard schreiben, weil dies in anderen Dateien anders heißt. Ich habe wie folgt ohne Erfolg getestet ;-)
If InStr(1, varInhalt(n), Like "[/*]", vbTextCompare) > 0 Then
Liebe Grüße,
Selma
Anzeige
AW: TXT-Datei importieren / Zellenformat
28.11.2020 18:36:55
Tino
Hallo,
versuche es so
If varInhalt(n) Like "[/*]" Then
Gruß Tino
AW: TXT-Datei importieren / Zellenformat
28.11.2020 19:22:47
Selma
Hallo Tino,
ich habe es versucht. Es hat nicht funktioniert.
Liebe Grüße,
Selma
AW: TXT-Datei importieren / Zellenformat
28.11.2020 20:49:19
Tino
Hallo,
melde mich später nochmal bin gerade noch am Rechner.
Gruß Tino
AW: TXT-Datei importieren / Zellenformat
28.11.2020 21:13:29
Selma
Hallo Tino,
ich habe es so geschafft:

If Left(varInhalt(n), 2) = "[/" Then
Liebe Grüße,
Selma

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige