Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1008to1012
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

Tabstopps entfernen

Tabstopps entfernen
08.09.2008 12:14:36
Bernd
Hallo zusammen,,
ich würde gerne eine Excel-Liste (10 Spalten) als Textdatei so abspeichern, dass die Trennnung der einzelnen Spalten mit einem Leerzeichen erfolgt. Tabstopps sollten auf jedemfall keine verwendet werden.
Welches Format muss ich wählen bzw. gibt es eine Möglichkeit über Makro?
Gruß
Bernd

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabstopps entfernen
08.09.2008 12:41:36
Erich
Hallo Bernd,
probier mal:

Option Explicit
Sub TextSpeichernLeerz()
Dim strT As String, strN As String, nr As Integer, zz As Long, cc As Long
strN = Application.GetSaveAsFilename(InitialFileName:="C:\temp\xxxx.txt", _
FileFilter:="Textdateien (*.txt), *.txt", _
Title:="Textfile ausgeben (Leerz.getrennt)")
If VarType(strN) = vbBoolean Then Exit Sub
nr = FreeFile(1)
Open strN For Output As #nr
For zz = 1 To LZWeTab()
strT = Cells(zz, 1)
For cc = 2 To 10           ' Spalten bis 10
strT = strT & " " & Cells(zz, cc)
Next
Print #nr, strT
Next zz
Close nr
End Sub
Function LZWeTab() As Long
Dim rng As Range
Set rng = Cells.Find("*", Cells(1, 1), xlValues, , xlByRows, xlPrevious)
If rng Is Nothing Then LZWeTab = 1 Else LZWeTab = rng.Row
End Function

Ubklar ist noch, ob auch leere Zellen mit Leerzeichen getrennt werden sollen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Tabstopps entfernen
08.09.2008 13:19:00
Bernd
Hallo Erich,
danke für die schnelle Antwort! Leider scheint das mit dem Format doch ein wenig komplizierter zu sein. Schon beim Öffnen der Textdatei verändert Excel was am Format, z. B. liegt das Datumformat in der Originaltextdatei im Format JJJJ.MM.TT vor, Excel konvertiert aber schon beim Öffnen in TT.MM.JJJJ.
Ich habe Dir einfach mal eine auf eine Zeile reduzierte Textdatei beigefügt. Normalerweise würde ich die jetzt in Excel öffnen, bearbeiten und dann wieder im identischen Format zurückspeichern. Lässt sich so was trotzdem ohne große Anpassungen in Deinem Makro realisieren. Ich denke mal, das Problem liegt vielleicht schon beim Konvertierungsvorgang bei erstmaligen Öffnen über Excel.
Hier der Link: https://www.herber.de/bbs/user/55246.txt
Viele Grüße
Bernd
Anzeige
AW: Tabstopps entfernen
08.09.2008 17:31:38
fcs
Hallo Bernd,
wenn die Daten in der text-Datei so aussehen sollen, wie sie in Excel angezeigt werden (formatiert) dann folgende Zeile

strT = strT & " " & Cells(zz, cc)
ändern in
strT = strT & " " & Cells(zz, cc).Text


Beim erneuten öffnen der Textdatei mit Excel (genauer Improtieren deer Daten) kann es allerdings passieren, dass die Inhalte in einem etwas anderen Format dargestellt werden, da die Textdatei keine Formate mitliefert und Excel eine mehr oder weniger passende Formatierung durchführt. Im Extremfall wird sogar "Datensalat" produziert.
Gruß
Franz

Anzeige
AW: Textfile bearbeiten
08.09.2008 19:51:00
Erich
Hi Bernd,
es wäre gut, du würdest mal darstellen, was du eigentlich erreichen willst.
In der Textdatei finde ich 11 Werte (also 11 Spalten?), die durch unterschiedlich viele Leerzeichen getrennt sind.
Öffnet man die Datei in Excel, kommt als Standard das raus:
 ABCDEFGHIJK
1114001.08.200826.0127,69122.807.2990761.4460111

Die "0000" (2. Spalte) wird eine Null, das Datum wird als Excel-Datum interpretiert und "normal" dargestellt.
Wenn man - ohne an den Daten etwas zu ändern - die Datei wieder ausgibt (mit Franz' Änderung),
entsteht aus dem Text der Zeile 1 ein Text wie in Zeile 2:
 A
1 114 0000 2008.08.01          26.012  7,690    122.807.299              0        761.446                 0               11      1
2114 0 01.08.2008 26.012 7,69 122.807.299 0 761.446 0 11 1
3 
4j114j0000j2008.08.01jjjjjjjjjj26.012jj7,690jjjj122.807.299jjjjjjjjjjjjjj0jjjjjjjj761.446jjjjjjjjjjjjjjjjj0jjjjjjjjjjjjjjj11jjjjjj1
5114j0j01.08.2008j26.012j7,69j122.807.299j0j761.446j0j11j1

Formeln der Tabelle
ZelleFormel
A4=WECHSELN(A1;" ";"j")
A5=WECHSELN(A2;" ";"j")

In Zeile 4 und 5 hab ich mal die Leerzeichen ersetzt durch "j", damit man was sieht.
In der Ausgabe (Zeile 2) sind jetzt die Daten nur durch ein einziges Lerzeichen getrennt -
du hattest das so geschrieben.
Gibt es vielleicht einen festen Satzaufbau? So etwa in der Art:
2. Zahl steht ab der 6. Stelle im Format 0000
Datum steht ab der 11. Stelle im Format JJJJ.MM.TT
usw.
Wie willst du die Datei in Excel bearbeiten? Soll das Datum ein Excel-Datum sein oder ein Text?
Eventuell ist Excel gar nicht das richtige Programm für die Bearbeitung,
wäre vielleicht ein Textverarbeitungsprogramm besser?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Textfile bearbeiten
09.09.2008 07:27:00
Bernd
Hallo zusammen,
also nochmal zur Klarstellung:
Bitte öffnet mal die txt-Datei über Notepad. So wie die Formatierung dort aussieht (entspricht wohl Zeile 4 von Erich's schönen Darstellung), so soll die Datei auch wieder aussehen nach Bearbeitung in Excel!!! Eventuell ist es aber ausreichend, wenn der Abstand zwischen den einzelnen Kolonnen nur 1 jeweils 1 Leerzeichen beträgt.
Bearbeitung in Excel deshalb, weil man eben mit Rechenfunktionen arbeiten kann. In der "Realität" besteht die Datei übrigens aus ca. 5000 Datensätzen und ich will diese Datei mit einem spezieller Konverter (Drittsoftware) weiterverarbeiten, die aber sehr empfindlich bei Änderungen im Datenformat ist.
Ich habe selber gestern nochmal herumprobiert und auch eine zuminstest mögliche Lösung gefunden, die mir aber nicht besonders gefällt. Öffnen der Datei in Excel, Änderunen durchführen, dann Formatierung der "Problemspalten" durchführen (aus 0 dann "0000"; Anpassung Datenformat), anschließend Speichern im csv-Format. Dann über Editor öffnen und ";" durch " " ersetzen. Das hat im Grunde genommen funktioniert, aber ich eigentlich nur auf den Standard-Editor Notepad zugreifen und bei Suchen/Ersetzen ist der doch recht langsam bei großen Datenblöcken, soweit ich mich jetzt gerade erinnere .
Es wäre echt schön, wenn man komfortabel über ein Makro lösen könnte!
Gruß
Bernd
Anzeige
AW: Textfile bearbeiten
09.09.2008 08:41:00
Reinhard
Hi Bernd,

Option Explicit
Sub tt()
Dim Satz As String
Close
Open "H:\kwspalten.txt" For Input As #1
Open "H:\kwspalten.csv" For Output As #2
While Not EOF(1)
Line Input #1, Satz
While InStr(Satz, "  ")
Satz = Replace(Satz, "  ", " ")
Wend
Satz = Trim(Satz)
Satz = Replace(Satz, " ", ";")
Print #2, Satz
Wend
Close
End Sub
Sub ttMitNullen()
Dim Satz As String
Close
Open "H:\kwspalten.txt" For Input As #1
Open "H:\kwspalten.csv" For Output As #2
While Not EOF(1)
Line Input #1, Satz
While InStr(Satz, "  ")
Satz = Replace(Satz, " 0 ", " 0000 ")
Satz = Replace(Satz, "  ", " ")
Wend
Satz = Trim(Satz)
Satz = Replace(Satz, " ", ";")
Print #2, Satz
Wend
Close
End Sub


Gruß
Reinhard

Anzeige
AW: Textfile bearbeiten
09.09.2008 09:06:06
Erich
Hi Bernd,

... so soll die Datei auch wieder aussehen nach Bearbeitung in Excel!!!
Eventuell ist es aber ausreichend, wenn ...

Wäre ganz gut, wenn du erst einmal diese Frage klärtest!
Wenn sich der Satzaufbau nicht ändern darf, kommst du mit dem CSV-Trick auch nicht viel weiter.
Wer/was generierte dir darin die vielen Leerzeichen an den richtigen Stellen?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige