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

Forumthread: VBA Excel export in TXT mit TAB

VBA Excel export in TXT mit TAB
26.02.2020 16:54:36
Hochheim
Hallo,
ich habe eine Frage. Ich möchte meine Exceltabelle via Makro in eine Texdatei schreiben.
Zeile 1 mit Tab´s getrennt dann Enter und Zeile B mit Tab´s getrennt.
Dafür habe ich was aus dem Netz gefunden, was auch wunderbar funktioniert. Das ganze hat nur einen Fehler.
Eine Zelle die als Währung deklariert ist z.B. 100,00 € wird in der TXT datei nur als 100 geschrieben.
Es soll aber genau das geschrieben werden was in der Tabelle 1 zu 1 steht.
Sonst hat es alles was ich suche. Es soll halt auch automatisch gespeichert und immer wieder ersetzt werden ohne mich zu fragen.
Kann man mir da helfen ?

Sub tt()
prcDatenExport Sheets("Daten")
End Sub

Sub prcDatenExport(wks As Worksheet)
Dim vntData, vntTmp(), strTmp As String, intfile As Integer
Dim i As Long, j As Long
Const strFile As String = "D:\Mieterdatenbank\Versuch\test.txt"  'anpassen
Const strDelim As String = vbTab   'Trennzeichen Tab
intfile = FreeFile
vntData = wks.Range("A1").CurrentRegion
ReDim vntTmp(1 To UBound(vntData, 2))
Open strFile For Output As intfile
For i = 1 To UBound(vntData)
For j = 1 To UBound(vntData, 2)
vntTmp(j) = vntData(i, j)
Next
strTmp = Join(vntTmp, strDelim)
Print #1, strTmp
Next i
Close intfile
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Excel export in TXT mit TAB
26.02.2020 17:23:20
Nepumuk
Hallo Hochheim,
teste mal:
Sub prcDatenExport(wks As Worksheet)
    
    Const strFile As String = "D:\Mieterdatenbank\Versuch\test.txt" 'anpassen
    
    Dim vntTmp(), strTmp As String, intFile As Integer
    Dim lngRows As Long, lngRow As Long
    Dim lngColumns As Long, lngColumn As Long
    
    intFile = FreeFile
    
    With wks.Range("A1").CurrentRegion
        
        lngRows = .Rows.Count
        lngColumns = .Columns.Count
        
    End With
    
    Redim vntTmp(1 To lngColumns)
    
    Open strFile For Output As #intFile
    
    With wks
        
        For lngRow = 1 To lngRows
            
            For lngColumn = 1 To lngColumns
                
                vntTmp(lngColumn) = .Cells(lngRow, lngColumn).Text
                
            Next
            
            Print #1, Join(vntTmp, vbTab)
            
        Next
    End With
    
    Close #intFile
    
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Excel export in TXT mit TAB
26.02.2020 18:18:05
Hochheim
Das klappt ja super.
Ach wenn man das nur selber könnte.
Ich werde das mal morgen an meinen originalen Datei auf Arbeit testen.
An der Testdatei ging das wie gewünscht.
DANKE DANKE DANKE
AW: VBA Excel export in TXT mit TAB
26.02.2020 18:21:55
Nepumuk
Hallo Hochheim,
habe gerade einen Fehler entdeckt.
Print #intFile, Join(vntTmp, vbTab)

Gruß
Nepumuk
Anzeige
AW: VBA Excel export in TXT mit TAB
27.02.2020 11:59:42
Maik
Hm was macht der Fehler ?
Denn es funktioniert ja zumindestens das was ich wollte macht es.
Nun habe ich es wie schon gestern erwähnt heute auf Arbeit getestet und mir ist noch ein Fehler aufgetreten.
Mit der Texdatei ist optisch alles richtig.
Aber wenn ich es ins PDF importieren sind meine Währungsdaten nicht mit € sondern mit " eingetragen.
In einen PDF Forum schrieb man mir dazu das es in UTF-8 mit BOM formatiert sein muss.
Kann man das implementieren ?
Dann aber nochmal was macht der Fehler falsch den du Nepumuk entdeckt hast ?
Gruß Hochheim
Anzeige
AW: VBA Excel export in TXT mit TAB
27.02.2020 14:01:36
Nepumuk
Hallo Hochheim,
1. Wenn du in Excel eine weitere Textdatei geöffnet hast, dann würde die zuerst geöffnete Datei angesprochen werden und nicht die aktuelle.
2. Dazu kann ich nichts sagen. Warum exportierst du nicht die Tabelle als PDF. Mit der klappt es garantiert.
Gruß
Nepumuk
AW: VBA Excel export in TXT mit TAB
27.02.2020 19:30:15
Hochheim
Wenn das direkt in PDF geht wäre gut. Dann spare ich mir die txt.
Ich habe bis jetzt nur nichts gefunden dazu.
Also ich habe eine Excel Tabelle in der in Mappe 1 Mieter und Mappe 2 Objekte eingetragen sind.
Über eine userform suche ich mir mit jeweils ein dropdownfeld Name vom Mieter und Objekt ID vom Objekt raus. Dann übergebe ich das an Mappe 3 und mittels SVERWEIS habe ich denn alle Daten die noch zur Person oder zum Objekt gehören in einer Zeile.
Jetzt habe ich einen Mietvertrag (PDF) mit Formularfelder und ich möchte aus der Excel Mappe 3 die Daten übergeben.
Bsp: Excel
A B C
1 Name Telefon Straße
2 Klaus 017222 Musterstraße
Übertrag in PDF Formular.
In das Feld Name, Telefon, Straße die Eintragungen Klaus, 017222, Musterstraße machen
jetzt mache ich das halt mit dem Export der Daten in eine txt Datei die mit Tabs getrennt sind.
Wenn ich beim Formular Daten importieren wird alles sauber eingetragen.
Nur bei der Miete steht jetzt immer " statt € und aus dem PDF Forum heißt es mit UTF-8 mit BOM formatiert sein muss.
Anzeige
AW: VBA Excel export in TXT mit TAB
27.02.2020 19:32:36
Nepumuk
Hallo Hochheim,
davon habe ich leider keine Ahnung. Ich lass die Frage offen.
Gruß
Nepumuk
AW: VBA Excel export in TXT mit TAB
27.02.2020 21:59:14
Hochheim
Es soll natürlich heißen
A1 Name B1 Telefon C1 Straße
A2 Klaus B2 107222 C2 Musterstraße
Ich habe die entstandene txt mal händisch auf UTF-8 geändert bringt aber nix.
Hab herausgefunden wenn ich die 102,00 € ohne € Zeichen speichere und als Text also 102.
Dann kann ich im Feld der PDF Datei sagen das ist eine Währung mit 2 Stellen nach dem Komma und € zeichen. Auch bei 101,1 macht er denn 101,10 € draus.
Aber danke für alles.
Wenn es was mit Excel zu PDF in Formulare geben sollte bitte schreiben.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Excel Export in TXT mit TABs


Schritt-für-Schritt-Anleitung

Um Deine Excel-Daten mit einem VBA-Makro in eine TXT-Datei zu exportieren und dabei Tabulatoren zu verwenden, folge diesen Schritten:

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

  2. Füge ein neues Modul ein, indem Du mit der rechten Maustaste auf „VBAProject“ klickst und „Einfügen“ > „Modul“ wählst.

  3. Kopiere den folgenden Code in das Modul:

    Sub prcDatenExport(wks As Worksheet)
        Dim vntData, vntTmp(), strTmp As String, intFile As Integer
        Dim i As Long, j As Long
        Const strFile As String = "D:\Mieterdatenbank\Versuch\test.txt"  'Anpassen
        Const strDelim As String = vbTab   'Trennzeichen Tab
        intFile = FreeFile
        vntData = wks.Range("A1").CurrentRegion
        ReDim vntTmp(1 To UBound(vntData, 2))
        Open strFile For Output As intFile
        For i = 1 To UBound(vntData)
            For j = 1 To UBound(vntData, 2)
                vntTmp(j) = vntData(i, j)
            Next
            strTmp = Join(vntTmp, strDelim)
            Print #intFile, strTmp
        Next i
        Close intFile
    End Sub
  4. Passe den Dateipfad in strFile an, damit er zu Deinem System passt.

  5. Rufe die Funktion auf, indem Du ein weiteres Makro erstellst:

    Sub tt()
        prcDatenExport Sheets("Daten")
    End Sub
  6. Schließe den VBA-Editor und führe das Makro tt aus.


Häufige Fehler und Lösungen

  • Problem: Währungsdaten werden nicht korrekt exportiert (z.B. als „100“ anstelle von „100,00 €“).

    • Lösung: Stelle sicher, dass Du die .Text-Eigenschaft der Zellen verwendest, um den genauen Textinhalt zu exportieren. Ändere den Code wie folgt:
    vntTmp(lngColumn) = .Cells(lngRow, lngColumn).Text
  • Problem: TXT-Datei hat nicht das richtige Format für PDF.

    • Lösung: Speichere die TXT-Datei im UTF-8 Format mit BOM. Dies kann mit zusätzlichem Code erreicht werden, den Du in die Datei einfügen musst.

Alternative Methoden

Eine einfache Möglichkeit, Daten aus Excel in TXT-Dateien zu exportieren, ist die Verwendung der integrierten „Speichern unter“-Funktion. Wähle „Text (Tabstopp-getrennt)“ im Speichern-unter-Dialog. Dies erfordert jedoch manuelle Anpassungen und ist weniger flexibel als das VBA-Makro.


Praktische Beispiele

Angenommen, Du hast eine Excel-Tabelle mit den folgenden Daten:

Name Telefon Straße
Klaus 017222 Musterstraße 1

Nach dem Ausführen des Makros wird die TXT-Datei so aussehen:

Klaus    017222    Musterstraße 1

Diese Daten kannst Du dann problemlos in andere Formate (wie PDF) importieren.


Tipps für Profis

  • Verwende vbTab für das Trennzeichen, um sicherzustellen, dass die Daten korrekt in Excel importiert werden können.
  • Wenn Du mehrere Arbeitsblätter exportieren möchtest, könntest Du eine Schleife erstellen, die durch alle benötigten Blätter iteriert.
  • Für eine bessere Übersichtlichkeit der exportierten Daten kannst Du die Datei nach jedem Export in einen spezifischen Ordner verschieben.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Währungsdaten korrekt exportiert werden? Verwende die .Text-Eigenschaft der Zellen, um den exakten Inhalt zu erhalten.

2. Wie kann ich die TXT-Datei im UTF-8 Format speichern? Dafür musst Du zusätzliche VBA-Funktionen verwenden, um das richtige Encoding sicherzustellen.

3. Kann ich das Makro anpassen, um nur bestimmte Spalten zu exportieren? Ja, Du kannst die Schleife so anpassen, dass nur die gewünschten Spalten in das vntTmp Array geschrieben werden.

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