txt-File erzeugen, Code verbessern

Bild

Betrifft: txt-File erzeugen, Code verbessern von: Christian Meier
Geschrieben am: 05.02.2005 20:35:09

Hallo Excel-Freunde,
ich möchte beim Ablauf eines VBA-Programms bestimmte Daten (Datum, Uhrzeit, Fehlermeldungen, etc.) in eine Txt-Datei schreiben.
- wenn die Datei nicht existiert, soll sie erzeugt werden.
- in der ersten Zeile der Txt-Datei soll eine Spalten-Überschrift stehen.
- die eigentlichen Daten sollen jeweils angehängt werden (also bei jedem ausführen des Codes in einer neue Zeile geschrieben werden).

Im Archiv hab ich schon das ein und andere gefunden und daraus das folgende "zusammengebastelt". Das funktioniert auch soweit. Es kommt mir aber eben noch sehr umständlich vor, den Txt-File vier mal öffnen zu müssen. (siehe Code)
Meine Frage: kann mir jemand helfen, den Code zu optimieren?
vielen Dank für eure Unterstützung
Gruß
Christian


Option Explicit


Sub LogFile()
Dim strFile As String, strTxt As String
Dim strCaption As String, strTmp As String
Dim i As Byte
strCaption = "Col1;Col2;Col3"             'Bsp: Überschrift
strTxt = "Data1;Data2;Data3"              'Bsp: Daten
strFile = ThisWorkbook.Path & "\Test.log"
'wenn Datei nicht existiert, dann erzeugen und Überschrift einsetzen:
If Dir(strFile) = "" Then
   Open strFile For Append As #1
   Print #1, strCaption
   Close #1
End If
'Wenn Datei existiert, aber keinen Eintrag hat, dann Überschrift einsetzen:
'auf Eintrag prüfen:
Open strFile For Input As #1
Do While Not EOF(1)
   Input #1, strTmp
   i = i + 1
   If i = 2 Then Exit Do
Loop
Close #1
'Überschrift einsetzen:
If i = 0 Then
   Open strFile For Append As #1
      Print #1, strCaption
   Close #1
End If
'strTxt anhängen:
Open strFile For Append As #1
   Print #1, strTxt
Close #1
End Sub

Bild


Betrifft: AW: txt-File erzeugen, Code verbessern von: Josef Ehrensberger
Geschrieben am: 06.02.2005 10:29:19

Hallo Christian!

Sollte funzen!


      
Sub LogFile()
Dim strFile As String, strTxt As String
Dim strCaption As String, strTmp As String
Dim i As Byte


strCaption = 
"Col1;Col2;Col3"             'Bsp: Überschrift
strTxt = "Data1;Data2;Data3"              'Bsp: Daten
strFile = ThisWorkbook.Path & "\Test.log"

   
Open strFile For Append As #1
   i = LOF(1)
      
If i = 0 Then
         
Write #1, strCaption
      
End If
   
Write #1, strTxt
   
Close #1

End Sub 


     Code eingefügt mit Syntaxhighlighter 3.0



Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: vielen Dank von: Christian Meier
Geschrieben am: 06.02.2005 14:02:53

Hi Sepp,
so einfach,wenn man's weiß.

Ich habe allerdings "Write #1" durch "Print #1" ersetzt, um die Einträge im Text-File nicht in Anführungszeichen zu erhalten. Welche weiteren Konsequenzen das hat, werd ich mir mal in der VBA-Hilfe anlesen.
Und ausserdem i jetzt als "Long" deklariert, da lt. VBA-Hilfe LOF einen Wert vom Typ Long zurückgibt. (die Deklaration als Byte stammt ja noch aus meinem ersten Versuch ...)

vielen Dank für deine Hilfe
wie immer hervorragend
Gruß
Christian


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Letzte Zeile finden und Zellinhalt kopieren"