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

Export in TXT

Export in TXT
Kai
Hallo,
ich habe hier aus dem Archiv ein Makro angepasst, welches mir für meine Belange geeignet schien , leider ist das Ergebniss nicht wie erhofft, was habe ich falsch gemacht oder übersehen?
hier mein Problem: https://www.herber.de/bbs/user/71716.xls
mfg
Kai

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

Betreff
Benutzer
Anzeige
AW: Export in TXT
01.10.2010 08:44:54
ing.grohn
Hallo Kai,
wie soll Export.txt aussehen?
Mit freundlichen Grüßen
Albrecht
AW: Export in TXT
01.10.2010 10:28:34
ing.grohn
Hallo Kai,
probier mal
Sub export_ASCII()
'Daten im aktiven Tabelleblatt werden aufbereitet und in eine Textdatei ausgegeben
Dim lngZeile As Long, lngSpalte As Long
Dim varDatei
Dim wks As Worksheet
Dim intFF As Integer
Dim Spalte As Integer
Dim strDatensatz As String
'Dateinamen für ASCII-Datei wählen
varDatei = Application.GetSaveAsFilename( _
Initialfilename:=Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".TXT", _
FileFilter:="ASCII(*.TXT),*.TXT", _
Title:="Daten-Export - Bitte Namen der ASCII-Datei wählen/eingeben")
If varDatei = False Then Exit Sub
Set wks = ActiveSheet
'Datei für Datenausgabe öffnen
intFF = FreeFile()
Open varDatei For Output As #intFF
With wks
'Daten einlesen und in Datei schreiben
For lngZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
For Spalte = 1 To 39
If Spalte  39 Then
strDatensatz = strDatensatz & .Cells(lngZeile, Spalte).Text & ";"
Else
strDatensatz = strDatensatz & .Cells(lngZeile, Spalte).Text
End If
Next Spalte
strDatensatz = Application.Clean(strDatensatz)
Print #intFF, strDatensatz
Next lngZeile
End With
'Datendatei schliessen
Close #intFF
End Sub
MfG
Albrecht
Anzeige
AW: Export in TXT
01.10.2010 11:20:11
Kai
Hallo Albrecht,
irgendwie ist der Wurm drinne, beim Export werden die Zeilen immer mit +1 eportiert, zur Erklärung:
WKS mit 5 Zeilen, dann erscheint im Export:
Zeile 1
Zeile 1
Zeile 2
Zeile 1
Zeile 2
Zeile 3
Zeile 1
Zeile 2
Zeile 3
Zeile 4 usw...
aber nicht vernünftig formatiert und mit dem Makro von mir wollte ich die Feldbreite vorgeben, weil die Exportdatei auf eine Übernahmeschnittstelle geschickt wird.
mfg
Kai
AW: Export in TXT
01.10.2010 12:44:55
ing.grohn
Hallo Kai,
so ist besser:
Sub export_ASCII()
'Daten im aktiven Tabelleblatt werden aufbereitet und in eine Textdatei ausgegeben
Dim lngZeile As Long, lngSpalte As Long
Dim varDatei
Dim wks As Worksheet
Dim intFF As Integer
Dim Spalte As Integer
Dim strDatensatz As String
'Dateinamen für ASCII-Datei wählen
varDatei = Application.GetSaveAsFilename( _
Initialfilename:=Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".TXT", _
FileFilter:="ASCII(*.TXT),*.TXT", _
Title:="Daten-Export - Bitte Namen der ASCII-Datei wählen/eingeben")
If varDatei = False Then Exit Sub
Set wks = ActiveSheet
'Datei für Datenausgabe öffnen
intFF = FreeFile()
Open varDatei For Output As #intFF
With wks
'Daten einlesen und in Datei schreiben
For lngZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
For Spalte = 1 To 39
If Spalte  39 Then
strDatensatz = strDatensatz & .Cells(lngZeile, Spalte).Text & ";"
Else
strDatensatz = strDatensatz & .Cells(lngZeile, Spalte).Text
End If
Next Spalte
strDatensatz = Application.Clean(strDatensatz)
Print #intFF, strDatensatz
strDatensatz = "" 'Variable leeren
Next lngZeile
End With
'Datendatei schliessen
Close #intFF
End Sub

Mit freundlichen Grüßen
Albrecht
Anzeige
AW: Export in TXT
01.10.2010 14:16:26
Kai
Hallo Albrecht,
Du hast mir mein Wochenende gerettet, ich habe mir aber erlaubt, wegen der Feldgrössen, das Makro anzupassen, ist ellenlang geworden, kann man so etwas auch kürzer / übersichtlicher hinbekommen ? Ist aber nicht so wichtig, nur wenn es keine grosse Mühe bereitet, ansonsten funktioniert es super.
Danke !
  • 
    Sub export_ASCII()
    'Daten im aktiven Tabelleblatt werden aufbereitet und in eine Textdatei ausgegeben
    Dim lngZeile As Long, lngSpalte As Long
    Dim varDatei
    Dim wks As Worksheet
    Dim intFF As Integer
    Dim Spalte As Integer
    Dim strDatensatz As String
    'Dateinamen für ASCII-Datei wählen
    varDatei = Application.GetSaveAsFilename( _
    Initialfilename:=Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".TXT", _
    FileFilter:="ASCII(*.TXT),*.TXT", _
    Title:="Daten-Export - Bitte Namen der ASCII-Datei wählen/eingeben")
    If varDatei = False Then Exit Sub
    Set wks = ActiveSheet
    'Datei für Datenausgabe öffnen
    intFF = FreeFile()
    Open varDatei For Output As #intFF
    With wks
    'Daten einlesen und in Datei schreiben
    For lngZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
    For Spalte = 1 To 39
    If Spalte = 1 Then
    'Persnummer
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 1).Text, _
    Feldlaenge:=6, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 2 Then
    'Status
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 2).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 3 Then
    'Einsatztag
    strDatensatz = strDatensatz & .Cells(lngZeile, 3).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 4 Then
    'Fabrikkalender
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 4).Text, _
    Feldlaenge:=2, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 5 Then
    'Schichtkennzeichen1
    strDatensatz = strDatensatz & .Cells(lngZeile, 5).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 6 Then
    'Schichtkennzeichen2
    strDatensatz = strDatensatz & .Cells(lngZeile, 6).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 7 Then
    'Schichtkennzeichen3
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 7).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 8 Then
    'Schichtkennzeichen4
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 8).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 9 Then
    'Schichtkennzeichen5
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 9).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 10 Then
    'Firma
    strDatensatz = strDatensatz & .Cells(lngZeile, 10).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 11 Then
    'Kostenstelle
    strDatensatz = strDatensatz & .Cells(lngZeile, 11).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 12 Then
    'Schicht von
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 12).Text, _
    Feldlaenge:=4, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 13 Then
    'Schicht bis
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 13).Text, _
    Feldlaenge:=4, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 14 Then
    'Name
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 14).Text, _
    Feldlaenge:=25, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 15 Then
    'Vorname
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 15).Text, _
    Feldlaenge:=20, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 16 Then
    'Ausweisnr
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 16).Text, _
    Feldlaenge:=6, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 17 Then
    'Arbeitsplatz
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 17).Text, _
    Feldlaenge:=2, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 18 Then
    'Arbeitsplatzinfo
    strDatensatz = strDatensatz & .Cells(lngZeile, 18).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 19 Then
    'Disposition
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 19).Text, _
    Feldlaenge:=25, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 20 Then
    'Vermittlungskennzeichen
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 20).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 21 Then
    'Stammlohngruppe
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 21).Text, _
    Feldlaenge:=3, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 22 Then
    'StammTarifkennzeichen1
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 22).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 23 Then
    'StammTarifkennzeichen2
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 23).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 24 Then
    'Lohngruppe
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 24).Text, _
    Feldlaenge:=3, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 25 Then
    'Tarifkennzeichen1
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 25).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 26 Then
    'Tarifkennzeichen2
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 26).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 27 Then
    'Verrechnungssatz
    strDatensatz = strDatensatz & .Cells(lngZeile, 27).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 28 Then
    'nichtFunktion2
    strDatensatz = strDatensatz & .Cells(lngZeile, 28).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 29 Then
    'nichtLadung1
    strDatensatz = strDatensatz & .Cells(lngZeile, 29).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 30 Then
    'nichtLadung2
    strDatensatz = strDatensatz & .Cells(lngZeile, 30).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 31 Then
    'Körperbehinderung
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 31).Text, _
    Feldlaenge:=1, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 32 Then
    'Fahrgemeinschaft
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 32).Text, _
    Feldlaenge:=3, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 33 Then
    'Bestellort
    strDatensatz = strDatensatz & .Cells(lngZeile, 33).Text
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 34 Then
    'Quali1
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 34).Text, _
    Feldlaenge:=2, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 35 Then
    'Quali2
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 35).Text, _
    Feldlaenge:=2, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 36 Then
    'Quali3
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 36).Text, _
    Feldlaenge:=2, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 37 Then
    'Quali4
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 37).Text, _
    Feldlaenge:=2, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    If Spalte = 38 Then
    'zusatzfunktion20
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 38).Text, _
    Feldlaenge:=2, Fuellzeichen:=" ", bolVor:=False)
    strDatensatz = strDatensatz & Chr(59) 'Leerzeichen
    Else
    'Geschlecht
    strDatensatz = strDatensatz & Datenfeld(Wert:=.Cells(lngZeile, 39).Text, _
    Feldlaenge:=1, Fuellzeichen:="M", bolVor:=False)
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    Next Spalte
    strDatensatz = Application.Clean(strDatensatz)
    'Daten der Spalten einlesen und für Datensatz-String aufbereiten
    'Datensatz in Datei schreiben
    Print #intFF, strDatensatz
    strDatensatz = "" 'Variable leeren
    Next lngZeile
    End With
    'Datendatei schliessen
    Close #intFF
    End Sub
    


  • mfg
    Kai
    Anzeige
    Hier mal mein Code
    01.10.2010 10:12:38
    Holger
    Hallo Kai,
    vielleicht hilft dir dieser Code weiter, auch aus diesem nettem Forum hier.
    Als Trennzeichen gibst du halt einfach ; anstatt meiner ~ an.
    Sub CreateCSV(strDateiname As String, Bereich As Object)
    Dim Zeile As Object, Zelle As Object
    Dim strTemp As String
    Dim strTrennzeichen As String
    strTrennzeichen = "~"
    Open strDateiname For Output As #1
    For Each Zeile In Bereich.Rows
    For Each Zelle In Zeile.Cells
    If InStr(1, Zelle.Text, strTrennzeichen) > 0 Then
    'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
    strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
    Else
    strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
    End If
    Next
    If Right(strTemp, 1) = strTrennzeichen Then
    strTemp = Left(strTemp, Len(strTemp) - 1)
    End If
    Print #1, strTemp
    strTemp = ""
    Next
    Close #1
    End Sub
    

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige