Datei leeren

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Datei leeren

    Hallo Leute,

    ich habe es durch Eure Hilfe jetzt schon hin bekommen, wie ich den Inhalt von Excel Zellen in eine Text-Datei schreibe.

    Nun sollte diese aber komplett leer sein, bevor dort reingeschrieben wird. Gibt es hier Jemanden, der mir den Code dafür schreiben könnte um die Text-Datei komplett von Daten leeren zu können?
    Am besten wäre es natürlich, wenn vorab auch noch geprüft wird, ob die Datei denn überhaupt existiert und wenn nicht wird diese angelegt! :)

    Hier mein bisheriger Code, den ich bereits getestet habe:

    Quellcode

    1. Private Sub speichern()
    2. Dim f As Integer
    3. Dim c As Variant
    4. Dim DateiName As String
    5. f = FreeFile
    6. DateiName = "D:\Test\test.txt"
    7. On Error GoTo Fehler
    8. If Dir(DateiName) <> "" Then '*
    9. Open DateiName For Append As f '*
    10. Else '*
    11. Open DateiName For Output As f
    12. End If '*
    13. For Each c In Worksheets("Tabelle1").Range("S2:S30")
    14. Print #f, c.Value & c.Offset(0,1).Value
    15. Next
    16. Fehler:
    17. If Err.Number <> 0 Then
    18. MsgBox Err.Description, vbCritical + vbOKOnly, "Fehler:" & Err.Number
    19. Err.Clear
    20. End If
    21. Close f
    22. On Error GoTo 0
    23. End Sub


    Leider bekomme ich es nicht selber hin... Besten Dank schonmal im Voraus!
    Ich kommentiere mal deinen Code bis zu der entscheidenden Stelle:

    Visual Basic-Quellcode

    1. Private Sub speichern()
    2. Dim f As Integer
    3. Dim c As Variant
    4. Dim DateiName As String
    5. f = FreeFile ' nächsten freien Dateihandler finden
    6. DateiName = "D:\Test\test.txt" ' Dateiname
    7. On Error GoTo Fehler 'Wenn Fehler auftritt, z.B. Datei nicht beschreibbar, etc dann dahin gehen
    8. If Dir(DateiName) <> "" Then '* 'Wenn die Datei existiert dann
    9. Open DateiName For Append As f '* Datei öffnen und Daten anhängen
    10. Else '*ansonsten
    11. Open DateiName For Output As f ' Datei neu erstellen
    12. End If '*
    13. For Each c In Worksheets("Tabelle1").Range("S2:S30")
    14. Print #f, c.Value & c.Offset(0, 1).Value
    15. Next
    16. Fehler:
    17. If Err.Number <> 0 Then
    18. MsgBox Err.Description, vbCritical + vbOKOnly, "Fehler:" & Err.Number
    19. Err.Clear
    20. End If
    21. Close f
    22. On Error GoTo 0
    23. End Sub
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Jep, der Teil mit dem Prüfen, ob die Datei vorhanden ist, ist bereits integriert und funktioniert auch!

    Wenn die Datei allerdings bereits vorhanden ist, werden die neuen Daten aus den Excel Zellen an die alte Text Datei angehängt, das soll aber nicht sein! Die Text Datei soll komplett leer sein, um dann die neuen Daten hinein schreiben zu können.

    Trotzdem Danke für die Kommentare, habe wieder was gelernt!

    Sooo, hab's selber hin bekommen! Hier meine Lösung dazu:

    Quellcode

    1. Private Sub speichern()
    2. Dim f As Integer
    3. Dim c As Variant
    4. Dim DateiName As String
    5. f = FreeFile
    6. DateiName = "D:\HBZ\Energieausweise\Berechnungsgrundlagen\Dena.depa"
    7. On Error GoTo Fehler
    8. If Dir(DateiName) <> "" Then '*
    9. fkt_ClearTXT ("D:\HBZ\Energieausweise\Berechnungsgrundlagen\Dena.depa") ' Aufruf der Funktion Datei Löschen
    10. Open DateiName For Append As f '*
    11. Else '*
    12. Open DateiName For Output As f
    13. End If '*
    14. For Each c In Worksheets("Dena").Range("A1:A604")
    15. Print #f, c.Value & c.Offset(0, 1).Value
    16. Next
    17. Fehler:
    18. If Err.Number <> 0 Then
    19. MsgBox Err.Description, vbCritical + vbOKOnly, "Fehler:" & Err.Number
    20. Err.Clear
    21. End If
    22. Close f
    23. On Error GoTo 0
    24. End Sub
    25. '
    26. Function fkt_ClearTXT(sFile As String) As Boolean
    27. Dim i As Integer, sTXT As String
    28. fkt_ClearTXT = True 'Default: kein Fehler
    29. i = FreeFile
    30. On Error GoTo Fehler
    31. Open sFile For Output As #i 'Öffnen zur Ausgabe
    32. GoTo Weiter
    33. Fehler:
    34. fkt_ClearTXT = False 'Fehler!
    35. Weiter:
    36. Close #i 'Direkt wieder schließen
    37. End Function

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Zacki“ ()

    Wieso die Datei nicht grundsätzlich "for Output" öffnen? Wenn ich mich nicht falsch erinnere, wird eine evtl. bereits existierende Datei dadurch sowieso überschrieben.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Wenn Ihr mir mal den Code dafür geben würdet, probiere ich es aus. So wie ich es jetzt gemacht habe, funktioniert es genau so wie ich es mir vorstelle. Was natürlich nicht heißt, das es nicht zu optimieren ist... Viele Wege führen nach Rom, es gibt halt lange Wege und kurze!