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

Daten ausschreiben

Daten ausschreiben
TommiH
Hallo,
gibt es eigentlich eine einfache Möglichkeit ein komplettes Excel-File in eine Text-Datei umzuwandeln?
Mein Problem ist, ich habe rund 400 Spalten die jeweils ca. 2-150 Zeichen breit sind.
Ich nehme nun Courier new und Schriftgröße 9, dann passt die eingestellte Zellenbreite ja ganz gut, bei 4 Zeichen steht da BREITE 4,29, bei 8 Zeichen 8,29 - Wenn ich das ganze nun einfach exportiere als formatierte Text, Leerzeichen getrennt, dann bekomme ich leider das Problem, das nach rund 250 Zeichen umgebrochen wird und somit erst alle Zeilen bis zur (Zeichen-Spalte) ca. 250 rausgeschrieben werden, dann kommen die Spalten 250-500 usw. - also untauglich für meine Zwecke.
Meine Idee, eine Schleife die jede Zeile durchgeht und sich an der jeweiligen Spaltenbreite orinentiert, also wenn ein 10 Zeichen breites Feld existiert wo eine 1023456 drin steht müsste die Routine 1-0-2-3-4-5-6 und 3 Blanks ausgeben. Das für jede Zelle und am Ende der ersten Zeile ein CR-Return.
Ist sowas einfach zu realisieren? Es soll halt einfach eine formatierte Ausgabe werden, oder gibt es ein Ausgabeformat, welches das schon kann und was ich nur noch nicht kenne? (Unicode habe ich schon probiert, das schreibt zwar alles in eine Zeile hintereinander, aber leider ohne die nötigen Leerzeichen, das es formatiert wäre...
Tommi

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

Betreff
Benutzer
Anzeige
warum nicht TAB-getrennt? owT
03.02.2011 12:59:39
Rudi
AW: warum nicht TAB-getrennt? owT
03.02.2011 13:12:13
TommiH
Das Programm/Script was später darauf zugreift braucht fixe Spalten und verarbeitet keine Tabs, hm, evtl. könnte es über ein weiteres Programm (Editor) gehen, welches die Tabs als Leerzeichen interpretiert... Der Punkt ist einfach, ich brauche zusätzlich dann auch eine Liste in der Form:
Zelle 1 - 40 breit - 1 - 40
Zelle 2 - 3 breit - 41 - 43
Zelle 3 - 7 breit - 44 - 50
usw. - also eine Auflistung, wo welche Zelle später genau steht. Das klappt mit den TABs meine ich nicht so ganz. (du meinst Text Tabbstopp-getrennt .txt) - das Problem ist, das die TABS (also deren Breite) nicht eindeutig sind.
Deshalb der Umweg über einen 'eigenen' Export.
Tommi
Tommi
Anzeige
AW: warum nicht TAB-getrennt? owT
03.02.2011 13:36:49
TommiH
Vermutlich ist es eine einfache Schleifengeschichte, aber ich grübel gerade über das rausschreiben (Zeichen für Zeichen) ansich und das Herausfinden der Spaltenbreite ;)
Tommi
AW: warum nicht TAB-getrennt? owT
03.02.2011 14:34:25
Rudi
Hallo,
teste mal:
Sub Export()
Dim vntDaten(), i As Long, j As Long, w As Integer
Dim sTemp As String
Const strDatei As String = "c:\test\yxc.txt"  'Ausgabedatei
ReDim vntDaten(Cells(1, 1).CurrentRegion.Rows.Count - 1)
For i = 1 To Cells(1, 1).CurrentRegion.Rows.Count
For j = 1 To Cells(1, 1).CurrentRegion.Columns.Count
w = Application.RoundUp(Cells(1, j).ColumnWidth, 0) 'Spaltenbreite (Ganzzahl)
sTemp = Cells(i, j).Text & String(w - Len(Cells(i, j).Text), " ")
vntDaten(i - 1) = vntDaten(i - 1) & sTemp
Next j
Next i
'in Datei ausgeben
Open strDatei For Output As #1
Print #1, Join(vntDaten, vbCrLf)
Close #1
End Sub

Liste beginnt in A1 und hat Überschriften in jeder Spalte!
Gruß
Rudi
Anzeige
AW: warum nicht TAB-getrennt? owT
03.02.2011 15:03:49
TommiH
Hai,
das sieht doch schon fast perfekt aus ;) - test habe ich in tmp angepasst, nun gibt es nur noch das Problem, das es auch Leerspalten/Zeilen gibt, also wo kein Wert enthalten ist, das könnte ich vlt. durch fixe Werte bei den FORs anpassen, oder? 423 Spalten (bei j) und 725 Zeilen (bei i).
Der einzige Haken ist, es gibt in den ersten beiden Zeilen Zellen die mehr Zeichen enthalten als Zellenbreite, da müsste ich vermutlich
String(w - Len(Cells(i, j).Text), " " )
in
iif(w>Len(Cells(i, j).Text), String(w - Len(Cells(i, j).Text), " " ), mid(Cells(i, j).Text), 1, w))
wandeln, oder?
Tommi
Anzeige
AW: warum nicht TAB-getrennt? owT
03.02.2011 15:30:17
Rudi
Hallo,
durch fixe Werte bei den FORs anpassen, oder? 423 Spalten (bei j) und 725 Zeilen (bei i).

kannst du machen.
es gibt in den ersten beiden Zeilen Zellen die mehr Zeichen enthalten als Zellenbreite

String(w - Len(Cells(i, j).Text), " " ) ergibt die Anzahl der anzuhängenden Leerzeichen.
dann auf Zellenbreite abschneiden?
sTemp = Left(Cells(i, j).Text, w) & String(Application.Max(0, w - Len(Cells(i, j).Text)), " ")
Gruß
Rudi
AW: warum nicht TAB-getrennt? owT
03.02.2011 16:29:43
TommiH
Perfekt es funktioniert, nun werde ich mir noch ein Script dazu basteln, was mit eine MAP erzeugt, also die Position der einzelnen Felder, das geht ja mit einer einfachen Schleife und dann passt es.
DANKE!
Tommi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige