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

Forumthread: speichern als .txt per vba

speichern als .txt per vba
08.07.2004 11:51:26
martin
moin zusammen,
da ich nicht weiss, ob mein thread von gestern mittag bereits als erledigt gilt schreibe ich mal neu.
ich bekam zum speichern von .txt-dateien folgende hilfe von andreas e:

Sub text()
Application.DisplayAlerts = False
ChDir "C:\ae\"
For i = 1 To Worksheets.Count
ActiveWorkbook.SaveAs Filename:="C:\ae\" & Sheets(i).Name & ".txt", FileFormat:=xlText, _
CreateBackup:=False
Next
Application.DisplayAlerts = True
End Sub

mein erster versuch mit dem modul hat folgendes ergebnis gebracht:
nach ausführen des moduls habe ich im ziel-ordner mehrere text-dateien mit den namen der tabellen. positiv!
in allen text-dateien ist der inhalt de ersten tabelle. negativ! in jeder text-datei soll möglichst der inhalt der jeweiligen tabelle sein.
die excel-mappe bekommt den namen der letzten tabelle. negativ! der ursprüngliche name soll beibehalten werden.
was muss ich ändern?
wie kann ich zusätzlich einen button für dieses makro erstellen (zb 'daten speichern' oder so)?
martin
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: speichern als .txt per vba
08.07.2004 11:58:15
TOM
Hallo Martin
z.B.
Open "c:\test.txt" For Output As #1
Print #1, "dein Inhalt muss ein String sein!"
Close
Gruss und einen guten Appetit
TOM
AW: speichern als .txt per vba
Ramses
Hallo
ungetestet aber probier mal

Sub text()
Application.DisplayAlerts = False
For i = 1 To Worksheets.Count
Worksheets(i).Activate
ActiveWorkbook.SaveAs Filename:="C:\ae\" & Sheets(i).Name & ".txt", FileFormat:=xlText
Next i
Application.DisplayAlerts = True
End Sub

Beim speichern als Text wird immer nur die gerade aktive Tabelle gespeichert, deshalb das "Worksheets(i).Activate"
Warum deine Mappe einen anderen Namen bekommt weiss ich nicht, aber kann es sein, dass dies der name der letzten Tabelle ist ? Deine Arbeitsmappe wird natürlich unter diesem Namen gespeichert und der letzte Tabellenname wird angezeigt.
Deine ursprüngliche Mappe ist unbeschädigt.
Button kannst du in der Symbolleiste erstellen über, Ansicht - Symbolleisten - Anpassen - Makro - Dein Makro in die Symbolleiste ziehen und ein Icon zuweisen.
Die Excel-Hilfe bietet dazu recht gute Hilfestellung
Gruss Rainer
Anzeige
AW: speichern als .txt per vba
martin
... super, die daten sind da, wo ich sie hin haben wollte!
jetzt habe ich noch ein frage:
wie kann ich den dateien den ordner zuweisen, wo bereits meine excel-mappe liegt? also an stelle von c:\ae\ den aktuellen pfad?
martin
AW: speichern als .txt per vba
Ramses
Hallo
das geht relativ einfach

Sub text()
Dim i As Integer
dim Home As String
Home = thisworkbook.Path
Application.DisplayAlerts = False
For i = 1 To Worksheets.Count
Worksheets(i).Activate
'Zielpfad
'ActiveWorkbook.SaveAs Filename:="C:\ae\" & Sheets(i).Name & ".txt", FileFormat:=xlText
'Homepfad
ActiveWorkbook.SaveAs Filename:= Homepath & "\" & Sheets(i).Name & ".txt", FileFormat:=xlText
Next i
Application.DisplayAlerts = True
End Sub

Gruss Rainer
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel-Dateien als .txt speichern mit VBA


Schritt-für-Schritt-Anleitung

Um Excel-Dateien als .txt zu speichern, kannst Du das folgende VBA-Skript verwenden:

Sub text()
    Dim i As Integer
    Dim Home As String
    Home = ThisWorkbook.Path ' Aktueller Pfad der Excel-Datei
    Application.DisplayAlerts = False
    For i = 1 To Worksheets.Count
        Worksheets(i).Activate
        ActiveWorkbook.SaveAs Filename:=Home & "\" & Sheets(i).Name & ".txt", FileFormat:=xlText
    Next i
    Application.DisplayAlerts = True
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject (DeineDatei)“ > Einfügen > Modul).
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Führe das Makro aus, um die Inhalte aller Tabellenblätter als .txt-Dateien zu speichern.

Häufige Fehler und Lösungen

  • Problem: Alle .txt-Dateien enthalten den Inhalt der ersten Tabelle.

    • Lösung: Stelle sicher, dass Du Worksheets(i).Activate verwendest, um die jeweilige Tabelle zu aktivieren, bevor Du die Datei speicherst.
  • Problem: Die Excel-Datei wird unter dem Namen der letzten Tabelle gespeichert.

    • Lösung: Dies geschieht, weil das Workbook den Namen der letzten aktiven Tabelle übernimmt. Um dies zu vermeiden, speichere die Datei manuell unter dem gewünschten Namen.

Alternative Methoden

Eine einfache Alternative zur Speicherung von Excel-Daten als .txt-Dateien ist die Verwendung von Open und Print:

Sub SaveAsTxtAlternative()
    Open "C:\test.txt" For Output As #1
    Print #1, "Dein Inhalt muss ein String sein!"
    Close #1
End Sub

Diese Methode eignet sich jedoch eher für das Speichern von Textinhalten anstelle von kompletten Arbeitsblättern.


Praktische Beispiele

Um die Funktionsweise zu demonstrieren, hier ein Beispiel für das Speichern einer Excel-Tabelle:

Angenommen, Du hast ein Arbeitsblatt mit dem Namen „Umsatz“ und möchtest es als .txt speichern. Mit dem obigen VBA-Code wird eine Datei mit dem Namen „Umsatz.txt“ im gleichen Verzeichnis wie Deine Excel-Datei erstellt.


Tipps für Profis

  • Wenn Du das Makro häufig verwendest, kannst Du einen Button in der Symbolleiste hinzufügen, um das Makro schnell auszuführen. Gehe dazu auf „Ansicht“ > „Symbolleisten“ > „Anpassen“ und ziehe das Makro in die Symbolleiste.

  • Nutze die FileFormat-Option, um andere Dateiformate zu speichern, z.B. xlCSV für CSV-Dateien, wenn Du die Daten im CSV-Format benötigst.


FAQ: Häufige Fragen

1. Wie kann ich den Pfad für die .txt-Dateien ändern?
Du kannst den Speicherort im ActiveWorkbook.SaveAs-Befehl anpassen. Ersetze Home mit dem gewünschten Pfad.

2. Kann ich mehrere Arbeitsblätter gleichzeitig speichern?
Ja, der obige Code speichert alle Arbeitsblätter der aktuellen Arbeitsmappe als separate .txt-Dateien.

3. Funktioniert dieser Code in Excel 2016 und 365?
Ja, der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, solange Du Zugriff auf den VBA-Editor hast.

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