Veröffentlicht 3. Februar 200619 j Hallo. Ich bin grad dabei für Excel ein Makro zu schreiben, dass mir eine Log-datei füllt. Das ganze klappt auch wunderbar, ABER: eich möchte für jeden durchlauf des Makros eine Art Header in die txt schreiben. ################## LOG - 3.2.2006 ################## Diesen Eintrag will ich also als erstes machen, kurz nachdem das Makro gestartet wurde ( wird per Auto_Open() durch den TaskManager gestartet). Doch dabei wird dieser erste Eintrag nie gemacht. Wenn ich schrittweise durch en Code springe, führt er zwar die Befehle aus, aber schreibt nichts in die txt. der zweite Eintrag klappt dann wuderbar. Starte ich das Makro aber per Hand (xls-Datei ist bereits offen und ich starte manuell die Sub Auto_Open() ) schreibt er mir den ersten Eintrag in die txt. Ich hoffe, dass es einigermaßen verständlich ausgedrückt ist und hoffe auch, dass jemand vielleicht da weiterhelfen kann. Danke schon mal im vorraus. mfG ahacker
3. Februar 200619 j Sub Auto_Open() Dim tmp As Boolean MsgBox "halt" Application.DisplayAlerts = False If Weekday(Date) = 1 Or Weekday(Date) = 7 Then Exit Sub If fncKompletterAblauf() Then tmp = fncLogFile(10, 0) Else tmp = fncLogFile(10, 1) End If ' ActiveWorkbook.Close savechanges:=False ' Workbooks.Close ' Application.DisplayAlerts = True End Sub 'Lässt alles Komplett ablaufen, schreibt Fehler in ein Logfile Function fncKompletterAblauf() As Boolean 'Start des Makros mit allen unterpunkten ' Dim tmp As Boolean bversand = True tmp = fncLogFile(11, 0) If bversand Then If fncVariablenfuellen Then tmp = fncLogFile(2, 0) Else tmp = fncLogFile(2, 1) bversand = False End If End If If bversand Then If fncInfoHolen() Then tmp = fncLogFile(3, 0) Else tmp = fncLogFile(3, 1) bversand = False End If End If If bversand Then If fncTabelleFuellen() Then tmp = fncLogFile(5, 0) Else tmp = fncLogFile(5, 1) bversand = False End If End If If bversand Then If fncTextdateiAnlegen() Then tmp = fncLogFile(6, 0) Else tmp = fncLogFile(6, 1) bversand = False End If End If If bversand Then If fncBatchdateiAnlegen() Then tmp = fncLogFile(7, 0) Else tmp = fncLogFile(7, 1) bversand = False End If End If If bversand Then If fncBatchExeOpen() Then tmp = fncLogFile(8, 0) Else tmp = fncLogFile(8, 1) bversand = False End If End If If bversand = False Then fncKompletterAblauf = False If fncErrErstell() Then tmp = fncLogFile(9, 0) Else tmp = fncLogFile(9, 1) End If Else fncKompletterAblauf = True End If ' End Function Function fncLogFile(ByVal iFnc As Integer, ByVal iErr As Integer) As Boolean On Error GoTo errLog Dim sMeldung As String Dim slog As String Dim ilog As Integer slog = PfadLog & Year(Date) & "_" & Month(Date) & "_Log.txt" ilog = FreeFile Open slog For Append As ilog Select Case iFnc Case 1 sMeldung = "" Case 2 sMeldung = "[ " & Date & " - " & Time & " ] - Variablenfuellen ... " If iErr = 0 Then sMeldung = sMeldung & "DONE" If iErr = 1 Then sMeldung = sMeldung & "ERROR" Case 3 sMeldung = "[ " & Date & " - " & Time & " ] - Infosholen ... " If iErr = 0 Then sMeldung = sMeldung & "DONE" If iErr = 1 Then sMeldung = sMeldung & "ERROR" Case 4 sMeldung = "[ " & Date & " - " & Time & " ] - Open 'Schichtplan.xls' ... " If iErr = 0 Then sMeldung = sMeldung & "DONE" If iErr = 1 Then sMeldung = sMeldung & "ERROR" Case 5 sMeldung = "[ " & Date & " - " & Time & " ] - Tabellefuellen ... " If iErr = 0 Then sMeldung = sMeldung & "DONE" If iErr = 1 Then sMeldung = sMeldung & "ERROR" Case 6 sMeldung = "[ " & Date & " - " & Time & " ] - Textdatei 'Schichtplan.txt' anlegen ... " If iErr = 0 Then sMeldung = sMeldung & "DONE" If iErr = 1 Then sMeldung = sMeldung & "ERROR" Case 7 sMeldung = "[ " & Date & " - " & Time & " ] - Batchdatei 'Mail.bat' anlegen ... " If iErr = 0 Then sMeldung = sMeldung & "DONE" If iErr = 1 Then sMeldung = sMeldung & "ERROR" Case 8 sMeldung = "[ " & Date & " - " & Time & " ] - Mailversand starten ... " If iErr = 0 Then sMeldung = sMeldung & "DONE" If iErr = 1 Then sMeldung = sMeldung & "ERROR" Case 9 sMeldung = "[ " & Date & " - " & Time & " ] - Fehlermail erstellt und verschickt ... " If iErr = 0 Then sMeldung = sMeldung & "DONE" If iErr = 1 Then sMeldung = sMeldung & "ERROR" Case 10 Dim sErfolg As String If iErr = 0 Then sErfolg = "erfolgreich" If iErr = 1 Then sErfolg = "fehlerhaft" sMeldung = "##########################################" & vbNewLine & _ "Der Schichtplanversand war " & sErfolg & "!" & _ vbNewLine & "##########################################" & vbNewLine Case 11 sMeldung = "##########################################" & vbNewLine & _ "LOG - " & Date & _ vbNewLine & "##########################################" End Select Print #ilog, sMeldung Close ilog GoTo skipLog errLog: fncLogFile = False Exit Function skipLog: fncLogFile = True End Function
3. Februar 200619 j Hi, ich glaube, hier fehlt ein Rautesymbol: [B] Open slog For Append As ilog[/B] wird zu --> Open slog For Append As #ilog
3. Februar 200619 j Ändert leider nichts. "Case 11" wird beim automatischen start immer noch nicht eingetragen
3. Februar 200619 j Hmm, ansonsten seh ich da keinen Fehler. Wenn ich ein ähnliches Ding bastel, funkt bei mir alles, ka, wat da bei Dir abläuft... Sorry
3. Februar 200619 j Jup, ich habe das ganze auch einmal extra getestet, und da funktioniert es auch fehlerfrei. Aber an den '#' kann es nicht zufällig liegen, die ich da in den Strings stehen habe?
3. Februar 200619 j Das # ist für den Dateizugriff. Dass muss beim Öffnen und schreiben angegeben werden.
3. Februar 200619 j achso, ich sprach von Open slog For Append As ilog wird zu --> Open slog For Append As #ilog
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.