Zum Inhalt springen

[VBA] Problem mit Eintrag in eine txt


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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


Geschrieben

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?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...