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

Aus Excel TXT-Datei erstellen VBA

Aus Excel TXT-Datei erstellen VBA
31.08.2020 13:52:50
Wesdi
Hallo zusammen,
ich möchte aus einer Excel-Tabelle eine TXT-Datei erzeugen die das Leerzeichen als Trennzeichen benutzt.
Um dies mittels eines kleinen Makros zu erzeugen, habe ich reichlich VBA-Skripte gefunden, die auch entsprechend funktionieren.
Jetzt kommt aber mein Problem!!!
Diese TXT-Datei soll als Schnittstellendatei fungieren und die einzelnen Spalten sollen unterschiedlich große Feldlängen haben. Hieran scheitere ich kläglich und finde auch im WWW keine passendes Beispiel, welches ich eventuell für meine Zwecke umbauen könnte
Beispiel:
Spalte1 = Feldlänge 3
Spalte2 = Feldlänge 10
Spalte3 = Feldlange 50
Spalte4 = Feldlänge 8
usw.
Eigentlich kein Hexenwerk...aber ich scheitere bei den vordefinierten Feldlangen.
Ein Beispiel der Ergebnisdatei habe ich hochgeladen.
https://www.herber.de/bbs/user/139946.txt

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

Betreff
Datum
Anwender
Anzeige
AW: Aus Excel TXT-Datei erstellen VBA
31.08.2020 14:08:11
peterk
Hallo
z.B.
Zeile = ""
Zeile = Zeile & space(3-len(Cells(1,1).value)) & Cells(1,1).value
Zeile = Zeile & space(10-len(Cells(1,2).value)) & Cells(1,2).value
Zeile = Zeile & space(50-len(Cells(1,3).value)) & Cells(1,3).value
AW: Aus Excel TXT-Datei erstellen VBA
31.08.2020 14:08:20
Nepumuk
Hallo Wesdi,
ein Beispiel:
Option Explicit

Public Sub Beispiel()
    
    Dim intFielenumber As Integer
    Dim strSpalte1 As String * 3, strSpalte2 As String * 10
    Dim strSpalte3 As String * 50, strSpalte4 As String * 8
    
    strSpalte1 = "AAA"
    strSpalte2 = "BBB"
    strSpalte3 = "CCC"
    strSpalte4 = "DDD"
    
    Reset
    
    intFielenumber = FreeFile
    
    Open "G:\Ausgabe.txt" For Output As #intFielenumber
    
    Print #intFielenumber, strSpalte1 & strSpalte2 & strSpalte3 & strSpalte4
    
    Close #intFielenumber
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Aus Excel TXT-Datei erstellen VBA
31.08.2020 14:17:36
Rudi
noch'n Gedicht:
Sub aaa()
Dim arrColumns
Dim lngRow As Long, lngColumn As Long
Dim l As Integer
Dim arrOut(0 To 3), strOut As String
arrColumns = Array(3, 10, 50, 8)
Open "c:\temp\Test.txt" For Output As #1
For lngRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For lngColumn = 0 To 3
l = arrColumns(lngColumn)
arrOut(lngColumn) = Left(Cells(lngRow, lngColumn + 1) & Space(l), l)
Next
strOut = Join(arrOut, " ")
Print #1, strOut
Next lngRow
Close #1
End Sub

Gruß
Rudi
AW: Aus Excel TXT-Datei erstellen VBA
31.08.2020 14:26:54
Wesdi
Hey Ihr seid der Wahnsinn!!!
So schnell geantwortet und so viele gute Ideen!!!
Dafür vielen Dank!!
Wesdi
Anzeige
AW: Aus Excel TXT-Datei erstellen VBA
03.09.2020 16:07:09
Wesdi
Hallo nochmal an Alle,
eure Antworten haben mir schon den richtigen Weg gezeigt, aber wenn ich die erstellte Datei jetzt in die Schnittstelle einspielen will, funktioniert es trotzdem nicht, er möchte das alles rechtsbündig haben.
Wie bekomme ich denn jetzt die Ausgabedatei so hin das alles rechtsbündig erzeugt wird?
Ich vermute auch hier für einen VBA-Fachmann eine Kleinigkeit, aber für mich....
Vielen Dank im voraus.
Wesdi
AW: Aus Excel TXT-Datei erstellen VBA
03.09.2020 16:45:08
Nepumuk
Hallo Wesdi,
teste mal:
Option Explicit

Public Sub Beispiel()
    
    Dim intFielenumber As Integer
    Dim strSpalte1 As String * 3, strSpalte2 As String * 10
    Dim strSpalte3 As String * 50, strSpalte4 As String * 8
    
    strSpalte1 = Space$(Len(strSpalte1) - Len(Cells(1, 1).Text)) & Cells(1, 1).Text
    strSpalte2 = Space$(Len(strSpalte2) - Len(Cells(1, 2).Text)) & Cells(1, 2).Text
    strSpalte3 = Space$(Len(strSpalte3) - Len(Cells(1, 3).Text)) & Cells(1, 3).Text
    strSpalte4 = Space$(Len(strSpalte4) - Len(Cells(1, 4).Text)) & Cells(1, 4).Text
    
    Reset
    
    intFielenumber = FreeFile
    
    Open "G:\Ausgabe.txt" For Output As #intFielenumber
    
    Print #intFielenumber, strSpalte1 & strSpalte2 & strSpalte3 & strSpalte4
    
    Close #intFielenumber
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Aus Excel TXT-Datei erstellen VBA
04.09.2020 13:46:53
Wesdi
Hallo Nepumuk,
das funktioniert super, die Abstände stimmen und wird erkannt.
Aber wie kriege ich es jetzt noch hin, daß er auch mehrere Zeilen ausliest.
Ich habe da unterschiedliche Dateien, mit unterschiedlich vielen Einträgen (mal 5, aber auch mal 1000).
Das kann ich ja nicht einzeln dareinpacken. Kann ich hier einen Zähler hinkriegen der schaut in wievielen Zeilen Daten stehen und dann alle diese Zeilen ausliest und auch schreibt?
Sorry ich bin da echt nicht fit in solchen Sachen.
Ich hatte mich für die Variante on Rudi Maintaire entschieden die alle Zeilen ausliest, aber nicht rechtsbündig.
Ich habe versucht aus den Informationen beider Makros mir eins zu bauen, gelingt mir aber nicht!!!?
Hier nochmal das von Rudi:
Sub aaa()
Dim arrColumns
Dim lngRow As Long, lngColumn As Long
Dim l As Integer
Dim arrOut(0 To 3), strOut As String
arrColumns = Array(3, 10, 50, 8)
Open "c:\temp\Test.txt" For Output As #1
For lngRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For lngColumn = 0 To 3
l = arrColumns(lngColumn)
arrOut(lngColumn) = Left(Cells(lngRow, lngColumn + 1) & Space(l), l)
Next
strOut = Join(arrOut, " ")
Print #1, strOut
Next lngRow
Close #1
End 

Sub
Er benutzt hier IngRow als Zähler, aber die Kombi aus beiden Makros gelingt mir gar nicht.
Vielen Dank im voraus
VG
Wesdi

Anzeige
AW: Aus Excel TXT-Datei erstellen VBA
04.09.2020 13:58:25
peterk
Hallo
Für Rechtsbndig:
arrOut(lngColumn) = Right(Space(l) & Cells(lngRow, lngColumn + 1), l)
Peter
AW: Aus Excel TXT-Datei erstellen VBA
04.09.2020 14:58:23
Wesdi
Hallo Peter,
vielen Dank, das war es...sieht gut aus und die Schnittstelle liest es auch ein.
Ich danke euch allen, ich habe das erste Mal euer Forum benutzt und erlebe soviel Hilfsbereitschaft.
Es gibt glücklicherweise auch positive Überraschungen und dieses Forum zählt dazu.
VG
Wesdi
AW: Aus Excel TXT-Datei erstellen VBA
04.09.2020 14:21:20
Wesdi
Hallo Nepumuk,
das funktioniert super, die Abstände stimmen und wird erkannt.
Aber wie kriege ich es jetzt noch hin, daß er auch mehrere Zeilen ausliest.
Ich habe da unterschiedliche Dateien, mit unterschiedlich vielen Einträgen (mal 5, aber auch mal 1000).
Das kann ich ja nicht einzeln dareinpacken. Kann ich hier einen Zähler hinkriegen der schaut in wievielen Zeilen Daten stehen und dann alle diese Zeilen ausliest und auch schreibt?
Sorry ich bin da echt nicht fit in solchen Sachen.
Ich hatte mich für die Variante on Rudi Maintaire entschieden die alle Zeilen ausliest, aber nicht rechtsbündig.
Ich habe versucht aus den Informationen beider Makros mir eins zu bauen, gelingt mir aber nicht!!!?
Hier nochmal das von Rudi:
Sub aaa()
Dim arrColumns
Dim lngRow As Long, lngColumn As Long
Dim l As Integer
Dim arrOut(0 To 3), strOut As String
arrColumns = Array(3, 10, 50, 8)
Open "c:\temp\Test.txt" For Output As #1
For lngRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For lngColumn = 0 To 3
l = arrColumns(lngColumn)
arrOut(lngColumn) = Left(Cells(lngRow, lngColumn + 1) & Space(l), l)
Next
strOut = Join(arrOut, " ")
Print #1, strOut
Next lngRow
Close #1
End 

Sub
Er benutzt hier IngRow als Zähler, aber die Kombi aus beiden Makros gelingt mir gar nicht.
Vielen Dank im voraus
VG
Wesdi

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige