Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ausgabe als Tabstopp getrennte txt.Datei

Ausgabe als Tabstopp getrennte txt.Datei
23.11.2006 15:55:54
Goto
Hallo zusammen,
haben folgenden Code der in den Datenfeldern VonLBLand(1 to AnzahlKorrelationenPriv), ZuLBLand(1 to AnzahlKorrelationenPriv), Korrelationenpriv(1 to AnzahlKorrelationenPriv,1 to 1) gesammelte Informationen als csv-Datei mit drei Spalten ausgibt.
Hier die relevanten Teile des Codes:
Dim KorrDatei
Dim Filt, FilterIndex, title
Dim Zähler as Integer
Dim AnzahlKorrelationenPriv as Integer
Dim InitialFile
Filt = "Comma Separated Files (*.csv),*.csv,"
FilterIndex = 1
title = "Text"
KorrDatei = Application.GetSaveAsFilename( _
Initialfilename:=InitialFile, _
FileFilter:=Filt, FilterIndex:=FilterIndex, title:=title)
If KorrDatei = False Then
MsgBox "No file was selected!"
Exit Sub
End If
'Die Felder VonLBLand(), ZuLBLand() enthalten Text, das Feld KorrelationenPriv() numerische Werte
'*********************************
'Ausgabe der Txt-Datei
'*********************************
Open KorrDatei For Output As #1
For Zähler = 1 To AnzahlKorrelationenPriv
Write #1, VonLBLand(Zähler), ZuLBLand(Zähler), Application.Round(KorrelationenPriv(Zähler, 1), 6)
Next Zähler
Close #1
Ich würde die Ausgabe allerdings als Tabstopp-getrennte txt.Datei brauchen. Habe einfach mal versucht alles auf .txt zu ändern,
Filt = "Text (Tabstopp-getrennt) (*.txt),*.txt,"
...
InitialFile = "Dateiname” & ".txt"
aber das hilft wenig, die Trennzeichen sind weiterhin Kommas. Hat jemand ein Ahnung wie man so eine Ausgabe als Tabstopp-getrennte txt.Datei macht.
Vielen Dank für die Hilfe
Goto
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausgabe als Tabstopp getrennte txt.Datei
23.11.2006 16:02:43
Rudi
Hallo,
Write #1, VonLBLand(Zähler)&vbtab ZuLBLand(Zähler)&vbtab Application.Round(KorrelationenPriv(Zähler, 1), 6)
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Ausgabe als Tabstopp getrennte txt.Datei
23.11.2006 16:18:15
Goto
Hallo Rudi,
danke für den Tipp,
es werden jetzt Tabstopps statt den Kommas ausgegeben, allerdings erkennt Excel wenn ich die Datei damit öffne die Tabstopps nicht als Feldtrennzeichen, sondern interpretiert den die ganze Zeile als einen einzigen String-Begriff.
Wenn ich die .txt - Datei im Editor öffne sieht das so aus:
".MSCIAT0CS .MSCIAT 0.5"
".MSCIAT0HC .MSCIAT 0.43"
".MSCIAT0IT .MSCIAT 0.20"
".MSCIEE0EN .MSCIEE 0.234"
(egal ob ich mit dt. oder engl. Ländereinstellung öffne)
im Excel steht alles in einer Zelle, die Tabstopps werden als Kästchen dargestellt
Woran kann das liegen?
Grüße
Goto
Anzeige
AW: Ausgabe als Tabstopp getrennte txt.Datei
23.11.2006 16:36:48
Reinhard
Hi Goto,
Option Explicit
Option Base 1
Sub tt()
Dim Satz, SatzS, Zei, Sp
Close
Open "xyz.txt" For Input As #1
While Not EOF(1)
Line Input #1, Satz
SatzS = Split(Satz, vbLf)
For Sp = 1 To UBound(SatzS)
Zei = Zei + 1
Cells(Zei, Sp) = SatzS(Sp)
Next Sp
Wend
Close
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
Warum so kompliziert :-) ?
23.11.2006 16:39:59
ramses
Hallo Reinhard
Daten - Text in Spalten
und dann dem Assistenen folgen ;-)
Gruss Rainer
Tja nu, macht mehr Eindruck beim Kunden :-) o.w.T.
23.11.2006 16:46:30
Reinhard


AW: Ausgabe als Tabstopp getrennte txt.Datei
23.11.2006 16:46:57
Goto
Hallo Reinhard,
kenne nicht alle Befehle in deinem Sub, aber hier wird doch eine Textdatei eingelesen und dann in ein Excelblatt geschrieben. Oder Lieg ich da falsch?
Bei mir geht es darum die in einem Datenfeld gespeicherten Daten die mehr als 65536 Zeilen haben als Tabstopp-getrennte Textdatei auszugeben
Grüße
Goto
Anzeige
AW: Ausgabe als Tabstopp getrennte txt.Datei
23.11.2006 16:56:16
Reinhard
Hi Goto,
erst willst du Excelzeilen Tabstopgetrennt in eine Textdatei, das löste Rudi.
Dann wolltest du die wieder einlesen aus der Textdatei nach Excel, das löste u.a. Ramses*g.
Nun willst du ein Datenfeld, welches, wo ist es, oder hast du die betaversion von XL2007,
dass mehr als 65536 Zeilen hat in eine Tabstopgetrennt Textdatei ausgeben.
Sehe ich das richtig und kommen noch mehr Planänderungen?
Gruß
Reinhard
Anzeige
AW: Ausgabe als Tabstopp getrennte txt.Datei
23.11.2006 17:26:49
Goto
Hallo Reinhard,
nochmal von vorne:
Ich verarbeite Daten im VBA, die in den Datenfeldern gespeicherten Daten möchte ich als Tabstopp-getrennte Textdatei ausgeben. Die ausgegebene Datei dient als Input für ein C++ Tool.
Rudi hat mir gezeigt wie ich zwischen den Feldern einen Tabstopp einfüge. Das wird auch gemacht, aber die ganze Zeile wird als ein Textfeld ausgegeben:
z.Bsp.
".MSCIAT0CS .MSCIAT 0.5"
richtigerweise sollte es wohl so aussehen:
".MSCIAT0CS" ".MSCIAT" 0.5
Da die ausgegebene Datei mehr als 65536 Zeilen hat kann ich das manuell nicht in Excel korrigieren (mit dem von Rudi gemachten vorschlag), ich habe also immer noch das Problem das die Ausgegebene Datei von einem anderen Programm beim Einlesen nicht als Tabstopp getrennte Textdatei erkannt wird.
Deinen Code habe ich nicht wirklich verstanden, könnte ich damit die ausgegebene Datei nochmal einlesen und so wie gewünscht korrigieren? Ideal wäre natürlich wenn die Datei gleich richtig ausgegeben wird, das wäre ein Arbeitsschritt weniger.
Grüße
Goto
Anzeige
AW: Ausgabe als Tabstopp getrennte txt.Datei
23.11.2006 17:37:02
Reinhard
Hi Goto,
evtl so:
Open KorrDatei For Output As #1
For Zähler = 1 To AnzahlKorrelationenPriv
Write #1, Chr(34) & VonLBLand(Zähler) & Chr(34) & vbTab & Chr(34) & ZuLBLand(Zähler) & Chr(34) & vbTab & Chr(34) & Application.Round(KorrelationenPriv(Zähler, 1), 6) & Chr(34)
Next Zähler
Close #1

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Ausgabe als Tabstopp getrennte txt.Datei
23.11.2006 18:38:42
Goto
Hallo Reinhard,
Ich hab jetzt folgende Varianten probiert (nehme nur die ersten zwei Felder zwecks übersichtlichkeit)
Chr(34) & VonLBLand(Zähler) & Chr(34) & vbTab & Chr(34) & ZuLBLand(Zähler) & Chr(34)
Ergebnis:
""".MSCIAT0CS"" "".MSCIAT"""
VonLBLand(Zähler) & Chr(34) & vbTab & Chr(34) & ZuLBLand(Zähler)
Ergebnis:
".MSCIAT0CS"" "".MSCIAT"
VonLBLand(Zähler) , vbTab , ZuLBLand(Zähler)
Ergebnis:
".MSCIAT0CS"," ",".MSCIAT"
Das scheint mir nichts zu bringen, manuell Textzeichen einzufügen. Vom Gefühl her würd ich sagen dass sollte direkt über die Funktion GetSaveAsFileName funktionieren.
Grüße
Goto
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Tabstopp-getrennte Textdatei aus Excel erstellen


Schritt-für-Schritt-Anleitung

Um eine Ausgabe als tabstopp-getrennte txt-Datei in Excel zu erstellen, kannst du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es dir, Daten aus Excel in eine Textdatei zu exportieren, wobei die Werte durch Tabstopps getrennt werden.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul ein, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" auswählst.

  3. Kopiere den folgenden Code in das Modul:

    Sub ExportAsTabDelimited()
       Dim KorrDatei As String
       Dim Zähler As Integer
       Dim AnzahlKorrelationenPriv As Integer
       Dim VonLBLand() As Variant
       Dim ZuLBLand() As Variant
       Dim KorrelationenPriv() As Variant
    
       ' Beispielinitialisierung
       AnzahlKorrelationenPriv = 10 ' Anzahl der Korrelationen
       ReDim VonLBLand(1 To AnzahlKorrelationenPriv)
       ReDim ZuLBLand(1 To AnzahlKorrelationenPriv)
       ReDim KorrelationenPriv(1 To AnzahlKorrelationenPriv, 1 To 1)
    
       ' Hier sollten die Daten populiert werden
    
       KorrDatei = Application.GetSaveAsFilename("Dateiname.txt", "Text (Tabstopp-getrennt) (*.txt),*.txt")
       If KorrDatei = False Then Exit Sub
    
       Open KorrDatei For Output As #1
       For Zähler = 1 To AnzahlKorrelationenPriv
           Write #1, Chr(34) & VonLBLand(Zähler) & Chr(34) & vbTab & Chr(34) & ZuLBLand(Zähler) & Chr(34) & vbTab & Application.Round(KorrelationenPriv(Zähler, 1), 6)
       Next Zähler
       Close #1
    End Sub
  4. Passe die Variablen VonLBLand, ZuLBLand und KorrelationenPriv an deine Bedürfnisse an.

  5. Führe das Skript aus, um die Daten als tabstopp-getrennte Textdatei zu speichern.


Häufige Fehler und Lösungen

  • Problem: Die Datei wird als CSV gespeichert und verwendet Kommas statt Tabstopps.

    • Lösung: Stelle sicher, dass du Write #1, ... & vbTab ... im Code verwendest, um Tabstopps einzufügen.
  • Problem: Excel interpretiert die Datei als einen einzigen String.

    • Lösung: Verwende Chr(34) um die Werte in Anführungszeichen zu setzen, damit Excel die Tabstopps korrekt erkennt.

Alternative Methoden

Falls du nicht mit VBA arbeiten möchtest, kannst du auch die Funktion "Text in Spalten" in Excel nutzen:

  1. Speichere die Daten zunächst als CSV-Datei.
  2. Öffne die CSV-Datei in Excel.
  3. Gehe zu "Daten" > "Text in Spalten".
  4. Wähle "Getrennt" und klicke auf "Weiter".
  5. Wähle "Tabulator" als Trennzeichen und klicke auf "Fertig stellen".
  6. Speichere die Datei erneut als txt-Datei.

Praktische Beispiele

Angenommen, du hast die folgenden Daten in deinen Excel-Zellen:

VonLBLand ZuLBLand KorrelationenPriv
.MSCIAT0CS .MSCIAT 0.5
.MSCIAT0HC .MSCIAT 0.43

Nach dem Ausführen des obigen VBA-Codes wird die txt-Datei wie folgt aussehen:

".MSCIAT0CS"    ".MSCIAT"   0.5
".MSCIAT0HC"    ".MSCIAT"   0.43

Diese Datei kann dann von anderen Programmen, wie einem C++ Tool, korrekt eingelesen werden.


Tipps für Profis

  • Überprüfe die Ländereinstellungen deines Excel, um sicherzustellen, dass Tabstopps korrekt interpretiert werden.
  • Nutze die Debug.Print-Anweisung im VBA, um Werte während der Ausführung zu überprüfen.
  • Erwäge, die Ausgabe als .csv zu speichern und mit einem Texteditor nachträglich die Trennzeichen zu ändern, wenn du mit großen Datenmengen arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass Excel die Tabstopps korrekt erkennt? Stelle sicher, dass du Chr(34) um deine Werte verwendest, um sie in Anführungszeichen zu setzen.

2. Kann ich auch andere Trennzeichen verwenden? Ja, du kannst anstelle von vbTab auch andere Trennzeichen einfügen, indem du einfach den entsprechenden Code in den VBA-Code schreibst.

3. Funktioniert das auch in älteren Excel-Versionen? Ja, die grundlegenden VBA-Befehle sind in den meisten Excel-Versionen verfügbar, jedoch könnten einige Funktionen variieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige