Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Open Textdatei for output

Open Textdatei for output
Gerald
https://www.herber.de/bbs/user/68237.txt
Hallo Zusammen,
ich habe folgendes Problem bei der Erzeugung einer Textdatei aus Excel heraus.
Angenommen in der Zelle A1 steht folgendes
A
1 Hallo Welt
so kann durch folgendem Code

Sub Test()
Dim strBla As String
Open "c:\DATEI1.txt" For Output As #1
strBla = Cells(1, 1)
Print #1, strBla
Close #1
End Sub

"Hallo Welt" in die Textdatei c:\Datei1.txt geschrieben werden.
Jetzt gibt es nicht nur einen Inhalt in der Zelle A1, sondern auch in A2 und A3.
A
1 Hallo Welt
2 Hallo Europa
3 Hallo Deutschland
Ist es möglich die Zellen A1 bis A3 zu markieren und den kompletten Inhalt auf einmal in eine Textdatei zu kopieren? Tatsächlich sind es bei mir nicht 3 Zeilen, sondern bis zu 5000, also der Range("A1:A5000").
Gruss Gerald
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Open Textdatei for output
25.02.2010 08:49:32
Armin
Hallo Gerald,
so strBla = Cells(1, 1) & Cells(2, 1) & Cells(3, 1)
Gruß Armin
AW: Open Textdatei for output
25.02.2010 08:53:38
Michael
Hallo Gerald!
Einfach eine Schleife:
Sub Test()
Dim strBla As String
Open "c:\DATEI1.txt" For Output As #1
for i=1 to 5000
Print #1 = "'" & Cells(i, 1) 'Hochkomma, damit keine Leerzeichen bei Zahlen übergeben  _
werden
Print #1,  "" 'für den Zeilenumbruch
next i
Close #1
End Sub
Gruß
Michael H
Anzeige
AW: Open Textdatei for output
25.02.2010 09:19:02
Gerald
Hallo Michael,
Danke für Deine Hilfe. Es klappt!
Mir reicht folgender Code:
Sub Test()
Dim i As Integer
Open "c:\DATEI1.txt" For Output As #1
For i = 1 To 5000
Print #1, Cells(i, 1)
Next i
Close #1
End Sub
Damit ist der Fall gelöst.
Besten Dank nochmals.
Gruss Gerald
Anzeige
AW: Open Textdatei for output
25.02.2010 10:35:16
Michael
Danke für die Rückmeldung.
AW: Open Textdatei for output
25.02.2010 08:56:33
Gerald
Hallo Armin,
Danke für die schnelle Antwort.
Bei Deiner Vorgehensweise erzeuge ich aus allen vorhandenen Zeilen einen Zelleninhalt, was meinem Anfangsbeispiel entspricht.
Ich möchte aber in meiner Textdatei 3 Zeilen bzw. 5000 Zeilen haben und nicht nur eine ganz lange.
Gruß Gerald
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Textdatei aus Excel mit VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine Textdatei aus Excel mit VBA zu erstellen, kannst du den folgenden Code verwenden. Dieser Code öffnet eine Textdatei zum Schreiben und überträgt die Inhalte einer bestimmten Zellreihe in diese Datei.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub Test()
    Dim i As Integer
    Open "c:\DATEI1.txt" For Output As #1
    For i = 1 To 5000
        Print #1, Cells(i, 1)
    Next i
    Close #1
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro mit ALT + F8 aus und wähle Test.

Dieser Code öffnet die Datei c:\DATEI1.txt und schreibt die Inhalte der Zellen A1 bis A5000 in die Textdatei. Du kannst den Pfad und den Dateinamen nach Bedarf anpassen.


Häufige Fehler und Lösungen

  • Fehler: "Datei kann nicht gefunden werden"
    Lösung: Stelle sicher, dass der Pfad zur Datei korrekt ist. Überprüfe, ob das Verzeichnis C:\ existiert und dass du Schreibrechte für diesen Ordner hast.

  • Fehler: "Typenübereinstimmung"
    Lösung: Dieser Fehler kann auftreten, wenn du versuchst, Daten eines anderen Typs als Text in die Datei zu schreiben. Achte darauf, dass die Zellen in Spalte A tatsächlich Text enthalten.


Alternative Methoden

Eine alternative Methode, um Daten in eine Textdatei zu schreiben, ist die Verwendung einer Schleife mit der Join-Funktion:

Sub Test()
    Dim data As Variant
    Dim output As String
    data = Range("A1:A5000").Value
    output = Join(Application.Transpose(data), vbCrLf)
    Open "c:\DATEI1.txt" For Output As #1
    Print #1, output
    Close #1
End Sub

Diese Methode kann effizienter sein, wenn du mehrere Zeilen auf einmal in die Datei schreiben möchtest.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Code anpassen kannst:

  1. Nur bestimmte Zeilen speichern: Wenn du nur die ersten 100 Zeilen speichern möchtest, passe die Schleife an:
For i = 1 To 100
  1. CSV-Datei erstellen: Um eine CSV-Datei zu erstellen, ändere die Dateiendung:
Open "c:\DATEI1.csv" For Output As #1
  1. Daten aus verschiedenen Spalten: Um Daten aus mehreren Spalten zu speichern, kannst du den Code wie folgt anpassen:
Print #1, Cells(i, 1) & "," & Cells(i, 2)

Tipps für Profis

  • Wenn du große Datenmengen verarbeiten musst, achte darauf, dass du den ScreenUpdating-Modus ausschaltest, um die Ausführung zu beschleunigen:
Application.ScreenUpdating = False
' Dein Code hier
Application.ScreenUpdating = True
  • Verwende Open for output as #1, um mehrere Dateien gleichzeitig zu verwalten.

FAQ: Häufige Fragen

1. Wie kann ich eine bereits vorhandene Textdatei überschreiben?
Der Befehl Open "c:\DATEI1.txt" For Output As #1 überschreibt die Datei automatisch, wenn sie bereits existiert.

2. Kann ich die Textdatei in einem anderen Format speichern?
Ja, du kannst die Dateiendung ändern, um verschiedene Formate zu speichern, wie .csv oder .log.

3. Wie kann ich Leerzeilen vermeiden?
Verwende eine Bedingung, um nur nicht-leere Zellen zu speichern:

If Not IsEmpty(Cells(i, 1)) Then
    Print #1, Cells(i, 1)
End If

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige