Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
760to764
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
760to764
760to764
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA export nach txt - 80 Spalten mit >600 Zeichen

VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 12:04:09
HorstH
Hallo nette Leute im Forum,
habe in der Recherche eine gutes script für den Export von Tabellen in .txt (feste Breiten) gefunden. Allerdings habe ich 80 Spalten (fixe Anzahl) mit über 600 Zeichen. Die Zeilenanzahl variiert bei mehreren Mappen. Wer weiß Rat? Hintergrund: von mehreren Außenstellen sollen wöchentlich diese Listen hergemailt werden und neu aufgebaut (mit import .txt) werden zwecks Weiterbehandlung. Der Aufbau aller Mappen ist identisch. Tipps oder sogar VBA sind herzichst willkommen!
Gruß
Horst

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 12:50:46
Harald E
Hallo Horst,
diesen Code hab ich seit geraumer Zeit im Einsatz (Quellcode von der Herber-CD).
Er speichert mir den zusammenhängenden Datensatz um Zelle A1 (currentregion) als Textfile in einen Archivordner. Dateinamensgebung ist automatisiert mit Datum und
dem was in Zelle P53 steht.
Vielleicht hilfts ja.

Sub IntTextDatei()
Dim rng As Range
Dim iRow As Integer, iCol As Integer, iFile As Integer
Dim sFile As String, sTxt As String
Set rng = Range("a1").CurrentRegion 'zusammenhängender Datensatz ab A1
If Dir("C:\MAU_Archiv", vbDirectory) = "" Then
MsgBox "Kein Zugriff auf das Archivlaufwerk ! Aktion abgebrochen"
Exit Sub
End If
sFile = "C:\MAU_Archiv\Datei vom " & Date & " Zuordnung " & Sheets(1).Range("P53").Value & ".txt" 'Dateiname automatisch mit Datum und Zellwert
iFile = FreeFile
Open sFile For Output As iFile
For iRow = 1 To rng.Rows.Count
For iCol = 1 To rng.Columns.Count 'oder deine 80
sTxt = sTxt & Cells(iRow, iCol).Value & " "
Next iCol
sTxt = Left(sTxt, Len(sTxt) - 1)
Print #iFile, sTxt
sTxt = ""
Next iRow
Close iFile
lRow = Worksheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets(2).Cells(lRow, 1) = Date
MsgBox "Habe die Daten in eine Textdatei eingelesen!"
End Sub

Gruss Harald
Anzeige
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 13:55:07
HorstH
Hallo Harald,
danke erst einmal. Sieht gut aus und habe es soweit angepasst. Frage: wird ein leeres sFile geöffnet - wie lautet genau der Name.
If Dir("C:\Programm_QSB0\dat_txt_exp", vbDirectory) = "" Then
MsgBox "Kein Zugriff auf das Archivlaufwerk ! Aktion abgebrochen"
Klär mich bitte auf. Danke.
Gruß
Horst
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 13:55:28
HorstH
Hallo Harald,
danke erst einmal. Sieht gut aus und habe es soweit angepasst. Frage: wird ein leeres sFile geöffnet - wie lautet genau der Name.
If Dir("C:\Programm_QSB0\dat_txt_exp", vbDirectory) = "" Then
MsgBox "Kein Zugriff auf das Archivlaufwerk ! Aktion abgebrochen"
Klär mich bitte auf. Danke.
Gruß
Horst
Anzeige
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 13:55:30
HorstH
Hallo Harald,
danke erst einmal. Sieht gut aus und habe es soweit angepasst. Frage: wird ein leeres sFile geöffnet - wie lautet genau der Name.
If Dir("C:\Programm_QSB0\dat_txt_exp", vbDirectory) = "" Then
MsgBox "Kein Zugriff auf das Archivlaufwerk ! Aktion abgebrochen"
Klär mich bitte auf. Danke.
Gruß
Horst
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 13:55:39
HorstH
Hallo Harald,
danke erst einmal. Sieht gut aus und habe es soweit angepasst. Frage: wird ein leeres sFile geöffnet - wie lautet genau der Name.
If Dir("C:\Programm_QSB0\dat_txt_exp", vbDirectory) = "" Then
MsgBox "Kein Zugriff auf das Archivlaufwerk ! Aktion abgebrochen"
Klär mich bitte auf. Danke.
Gruß
Horst
Anzeige
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 13:55:50
HorstH
Hallo Harald,
danke erst einmal. Sieht gut aus und habe es soweit angepasst. Frage: wird ein leeres sFile geöffnet - wie lautet genau der Name.
If Dir("C:\Programm_QSB0\dat_txt_exp", vbDirectory) = "" Then
MsgBox "Kein Zugriff auf das Archivlaufwerk ! Aktion abgebrochen"
Klär mich bitte auf. Danke.
Gruß
Horst
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 13:55:51
HorstH
Hallo Harald,
danke erst einmal. Sieht gut aus und habe es soweit angepasst. Frage: wird ein leeres sFile geöffnet - wie lautet genau der Name.
If Dir("C:\Programm_QSB0\dat_txt_exp", vbDirectory) = "" Then
MsgBox "Kein Zugriff auf das Archivlaufwerk ! Aktion abgebrochen"
Klär mich bitte auf. Danke.
Gruß
Horst
Anzeige
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 14:03:32
Harald E
Hi,
da diese Anwendung über Netzwerk läuft, dient diese Zeile lediglich dazu das Vorhandensein des Laufwerks incl. Ordner (nicht der Datei) klarzustellen.
Ob man's glaubt oder nicht. Netzwerke können manchmal Probleme machen ;-))
Ist der Dateiname! bereits vorhanden, hat dieser Code die vorhandene Datei überschrieben.
Gruss Harald
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 14:28:09
HorstH
Hi Harald,
also - es wird alles exportiert - aber versch. Einstellungen Import in ein neues Tabellenblatt ist das blank als Trennungszeichen unglücklich. Ich habe nun alles in einer Zelle und müsste erst einmal alles splitten bis zur letzten Spalte hin. Oder machst du das anders? Packe export und import in die Beispielmappe - sofern du einmal schauen willst. Gruß Horst
https://www.herber.de/bbs/user/33315.txt

Die Datei https://www.herber.de/bbs/user/33316.xls wurde aus Datenschutzgründen gelöscht

Die Datei https://www.herber.de/bbs/user/33317.xls wurde aus Datenschutzgründen gelöscht

Anzeige
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 14:38:26
Harald E
Hi Horst,
hab eigentlich schon Feierabend und auf die Schnelle, kann ich nur das da anbieten.
Ungetestet !
sTxt = sTxt & Cells(iRow, iCol).Value & vbTab
Hoffe es hilft
Gruss Harald
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 14:51:03
HorstH
Hallo Harald,
danke. Damit erreiche ich leider noch nicht, dass beim import in ein neues sheet die tabelle wied so in Reih und Glied ist wie das Original. Was in B5 ist muss wieder in B5 bis hin zur letzten Zelle. Muss nachher zuhause auch noch mal tüfteln. Was schreibt man, wenn man Semikolon als Begrenzer nimmt? Damit müsste doch eigentlich die Zelltrennung erreicht werden - aber wie ist es dann mit 80 Spalten? Konnen uns ja morgen noch einmal austauschen. Danke erst einmal und angenehmen Feierabend!
Gruß
Horst
Anzeige
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 14:59:29
Harald E
Ganz kurz noch...
ohne mich fangen die eh nicht an zu Grillen ;-))
statt vbTab hatte ich ursprünglich das Leerzeichen " "
es sollte auch mit "," machbar sein.
Allerdings hab ich die Quelldatei kurz mal überflogen und würde anraten, per Text in Spalten o.ä. die Quelldatei "aufzuräumen".
Kann alles per Rekorder automatisiert werden.
Ggf. den manuel und wunschgemäß durchgeführten Textexport ebenfalls mal aufzeichnen.
Muss gestehen, dass mein Level nicht gut genug ist, diee Dinge aus dem Stehgreif anzugehen.
Viel Erfolg und bis morgen (Vielleicht nimmt es sich ja ein anderer Antworter der Problematik erfolgreicher an)
Gruss Harald
Anzeige
AW: VBA export nach txt - 80 Spalten mit >600 Zeichen
04.05.2006 15:25:28
HorstH
"Echt cool" Find ich ja gut. werde mal einiges durchprobieren - mit deinen Vorschlägen. Danke für die Mühe!!
Gruß
Horst
AW: VBA export nach txt - 80 Spalten mit >600 Zeic
06.05.2006 10:00:05
Reinhard
Hi Horst,
die Datei https://www.herber.de/bbs/user/33378.xls
hat folgenden Code:
' 20060504 von Harald E
Sub IntTextDatei2()
Dim iRow As Long, iCol As Integer, iFile As Integer, sfile As String, sTxt As String, sTxt2, sTxt3
sfile = "C:\temp\" & Date & "Text.txt"
sFile2 = "C:\temp\" & Date & "Farben.txt"
sFile3 = "C:\temp\" & Date & "Fett.txt"
iFile = FreeFile
Open sfile For Output As #iFile
iFile2 = FreeFile
Open sFile2 For Output As #iFile2
iFile3 = FreeFile
Open sFile3 For Output As #iFile3
sTxt = "'"
For iRow = 1 To Range("B65536").End(xlUp).Row
For iCol = 1 To 79
sTxt = sTxt & Cells(iRow, iCol).Value & vbTab
sTxt2 = sTxt2 & Cells(iRow, iCol).Font.ColorIndex & vbTab
sTxt3 = sTxt3 & Cells(iRow, iCol).Font.Bold & vbTab
Next iCol
sTxt = Left(sTxt, Len(sTxt) - 1)
sTxt2 = Left(sTxt2, Len(sTxt2) - 1)
sTxt3 = Left(sTxt3, Len(sTxt3) - 1)
Print #iFile, sTxt
Print #iFile2, sTxt2
Print #iFile3, sTxt3
sTxt = "'"
sTxt2 = ""
sTxt3 = ""
Next iRow
Close
lRow = Worksheets("02").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets(2).Cells(lRow, 1) = Date
MsgBox "Habe die Daten in eine Textdatei eingelesen!"
End Sub
Sub Einlesen()
Dim iFile As Integer, zei As Long, Satz As String, Satz2, sfile, n
sfile = "C:\temp\" & Date & "Text.txt"
iFile = FreeFile
Worksheets.Add
Open sfile For Input As #iFile
While Not EOF(iFile)
Input #iFile, Satz
zei = zei + 1
Satz2 = Split(Satz, vbTab)
Range(Cells(zei, 1), Cells(zei, 79)) = Satz2
Wend
sfile = "C:\temp\" & Date & "Farben.txt"
iFile = FreeFile
Open sfile For Input As #iFile
zei = 0
While Not EOF(iFile)
Input #iFile, Satz
zei = zei + 1
Satz2 = Split(Satz, vbTab)
For n = 1 To 79
ActiveSheet.Cells(zei, n).Font.ColorIndex = CInt(Satz2(n - 1))
Next n
Wend
sfile = "C:\temp\" & Date & "Fett.txt"
iFile = FreeFile
Open sfile For Input As #iFile
zei = 0
While Not EOF(iFile)
Input #iFile, Satz
zei = zei + 1
Satz2 = Split(Satz, vbTab)
For n = 1 To 79
ActiveSheet.Cells(zei, n).Font.Bold = -1 * (Satz2(n - 1) = "Wahr")
Next n
Wend
Close
ActiveSheet.Columns("A:CA").AutoFit
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: VBA export nach txt - 80 Spalten mit >600 Zeic
08.05.2006 11:27:56
HorstH
Hallo Reinhard,
eine - für mich - sehr elegante Lösung!! Vielen Dank für deine Mühe. Habe mir in Ruhe das script und die Dateien angeschaut und probiert. Eine wirklich sehr pfiffige Lösung. Ich habe da aber noch ein Problemchen: schaue dir doch bitte einmal Zeile 85+86 an. Da ist ein Sprung. Tüftel schon den ganzen Morgen. Komme nicht dahinter, warum. Kannst du dir das bitte noch einmal anschauen. Habe ich etwas übersehen? in den vorigen Zeilen sind auch mehrere "leere Datumsfelder druchgehend" ohne Fehler. Kann man das beheben??
Würde mich über Antwort sehr freuen!
Gruß aus Bremen - Horst
https://www.herber.de/bbs/user/33413.xls
Anzeige
Fehler durch/bei Split, aber schleierhaft warum
08.05.2006 13:44:27
Reinhard
Hi Horst,
ich kapier das auch nicht, es liegt an dem Komma in I85.
(für MitleserInnen, Satz ist die ganze Zeile, getrennt durch Tabs)
Satz2 = Split(Satz, vbTab)
Range(Cells(zei, 1), Cells(zei, 79)) = Satz2
macht dann aus
Tabellenblattname: 01
H                                       I                                        J    K    L
85      Bereich Sozialzentrum reinigen und aufräumen, Arbeitsgeräte instand halten   8    373   6

dieses:
Tabellenblattname: 13
H                                       I           J    K    L
85      Bereich Sozialzentrum reinigen und aufräumen   #NV   #NV   #NV

und das da:
Tabellenblattname: Tabelle13
A                 B    C    D
86  Arbeitsgeräte instand halten   8   373   6

Als workaround fällt mir jetzt nur auf die Schnelle ein, die Kommas in "Satz" vor dem Splitten durch "xyzäö" zu ersetzen und danach in Satz2(n) wieder zurückersetzen.
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: Fehler durch/bei Split, aber schleierhaft warum
08.05.2006 13:51:30
HorstH
Hallo Reinhard,
du hast 101 Punkte! Das olle Komma war's. Das kann ich ja in den Griff bekommen: Keine Kommata in den Quellen. Super. Danke!
Gruß
Horst
AW: Fehler durch/bei Split, aber schleierhaft waru
08.05.2006 14:05:25
Reinhard
Hi Horst,
freut mich wenns klappt, aber bin an Antworten zu dem Splitproblem interessiert, deshalb Frage nochmal auf offen gestellt.
Gruß
Reinhard

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige