Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
364to368
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
364to368
364to368
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler protokolieren

Fehler protokolieren
14.01.2004 21:43:29
Jonathan
Hey,
Guten Abend allerseits!
Bin wieder zu Hause - endlich vom Termin - und natürlich direkt wieder in diesem klasse Forum!!!
Das macht einfach Spaß hier Fragen zu stellen, da man sie IMMER beantwortet bekommt, die Lösungen einfach genial sind, und sich keiner über die Unwissenheit des Fragestellers ärgert!!!
Danke erstmal Euch allen!

Hier zu meiner Frage:
ist es möglich, Fehler welche durch einen VBA - Code verursacht wurden, zu protokollieren? evtl. in einer textdatei, oder in einem sheet der arbeitsmappe?
dass man sich das anschauen kann und den namen der datei sieht, den pfad und den fehler. welche meldung, bei welcher aktion!?
Wenn das gehen würde, wäre ich glücklich!
Jonathan

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler protokolieren
14.01.2004 21:58:53
K.Rola
Hallo,
klar, es geht fast alles. Willst du ein Beispiel?
Gruß K.Rola
JAAAAAAAAA
14.01.2004 22:03:16
jonathan
bitte :-)
AW: JAAAAAAAAA
14.01.2004 22:19:44
K.Rola
Hallo,
die Protokolldatei musst du nicht anlegen, wenn sie nicht existiert, wird
sie automatisch erzeugt:
Option Explicit
Const STRPFAD As String = "C:\Eigene Dateien\"
Const STRDATEI As String = "Fehlerlog.txt"

Function LogError(errData As ErrObject)
Dim FF As Integer, UName As String, WBName As String
UName = Application.UserName
WBName = ActiveWorkbook.Name
FF = FreeFile
Open STRPFAD & STRDATEI For Append As #FF
Print #FF, Now, errData.Number, Err.Source, Err.Description, UName, WBName
Close FF
End Function


Sub TestFehlerLog()
Dim intX As Integer, intY As Integer, intZ As Integer
intY = 100
intX = 1000
On Error GoTo errFehlerLog
intX = intY / 0
Exit Sub
errFehlerLog:
MsgBox "Das " & Err.Source & " verursachte den Fehler  " & Err & "  " & Err.Description & "!          ", 64, "gebe bekannt..."
LogError Err
End Sub


Gruß K.Rola
Anzeige
Stark!
14.01.2004 22:28:24
Boris
Hi K.Rola,
funktioniert - natürlich - einwandfrei. Gibt´s dafür auch konkrete Anwendungsbeispiele?
Grüße Boris
AW: Stark!
14.01.2004 22:34:25
K.Rola
Hallo Boris,
was meinst du mit "konkrete Anwendungsbeispiele"?

Gruß K.Rola
Mit "Anwendungsbeispielen" mein ich...
14.01.2004 22:40:00
Boris
Hi K.Rola,
...wann und wo setzt man so was ein? Da du (als VBA-Guru) sofort eine Antwort parat hattest und auch nicht ob des Hintergrunds der Frage genörgelt hast, bin ich einfach mal davon ausgegangen, dass es durchaus "Gang und Gäbe" ist, solch einen TXT-Datei "mitlaufen" zu lassen bzw. VBA-Fehler zu protokollieren. Und da würd´s mich einfach mal interessieren, mit welchem Hintergrund etc... bzw. wie man sowas sinnvoll nutzen (und nicht bloß bestaunen) kann.
Grüße Boris
Anzeige
AW: Mit "Anwendungsbeispielen" mein ich...
14.01.2004 22:51:03
K.Rola
Hallo Meister des Schweifs,
gut formuliert!
Also, wann "man" das einsetzt, weiß ich nicht. Ich kann dir ein konkretes
Beispiel nennen, wann ich das einsetze. Wenn ich z.B. mit meinen Programmiereleven
einen Taschenrechner oder was auch immer bastele, werden damit die Fehler
aufgezeichnet, die während der Entwicklung gemacht wurden. Wobei ich das dann
aber in einem Excelsheet mache, das ist besser auswertbar als eine Textdatei,
doch wem erzähl ich das.
Gruß K.Rola
Dank an die Meisterin der geschliffenen Code(in)..
14.01.2004 23:11:31
Boris
Hi K.Rola,
...was soll ich sagen: Überzeugende Argumentation.
Wahrscheinlich werd ich mich einfach erstmal selbst so überwachen (aber innerhalb der .xls) - um nach Ende meines Projektes zu sehen, wieviele Fehler denn so aufgetreten sind (dabei dürfte die Zeilenzahl in Excel sehr knapp bemessen sein...)
Danke und Grüße
Boris
Anzeige
AW: Mit "Anwendungsbeispielen" mein ich...
14.01.2004 22:56:22
jonathan
hier, warum ich es gut brauchen kann:
ich habe für meien Firma ein sehr umfangreiches "programm" geschrieben - ca 50 dateien.....
bei mir läuft alles, weil ich weiß, wie ich es benutzen muss....... nun treten aber bestimmt fehler auf, an die ich nicht mal im traum gedacht habe..... um diese zu beheben, weil wohl keiner was damit anzufangen, geschweige denn damit umzugehen weiß, schaue ich mir regelmäßig jetzt diese txt datei an.........
bitte um kurze erklärung
14.01.2004 22:34:18
jonathan
hey K.Rola,
kannst du mir vielleicht kurz was erklären dazu?
welche feler werden erfasst? wo kommt der code hin?

Ich habe echt keine ahnung.......

Dank Dir!!!!
Anzeige
AW: bitte um kurze erklärung
14.01.2004 22:39:52
K.Rola
Hallo,
die

Function kopierst du in ein Standardmodul.
In den Code, von dem du willst, dass die Fehler protokolliert
werden sollen kopierst du:

Sub deine_Prozedur()
On Error GoTo errFehlerLog
''Dein Code
errFehlerLog:
LogError Err
End Sub

HAMMER!!!!!!!
14.01.2004 22:50:32
jonathan
suuper!!!!!!!
das ist ja genau das was ich wollte!!!!!!! dank dir!!!!!!!!
in der textdatei werden alle fehler untereinander gespeichert?!

gibt es eine möglichkeit, die fehler nicht untereinander in einer textdatei zu speichern, sondern in einem worksheet der aktiven arbeitsmappe

Jonathan
Anzeige
AW: HAMMER!!!!!!!
14.01.2004 22:58:24
K.Rola
Hallo,
na klar geht das auch. In welcher Form willst du das denn haben,
für jeden Fehler eine neue Zeile?
Gruß K.Rola
AW: HAMMER!!!!!!!
14.01.2004 23:04:04
jonathan
das wäre denke ich am sinnvollsten, oder?
ich habe gerade gelsen, dass du es auch so machst, vielleicht hast ja nen tipp?

Jonathan
AW: HAMMER!!!!!!!
14.01.2004 23:37:37
K.Rola
Hallo,
DAS Protokollblatt hat den C o d e n a m e n PROT, den kannst du im
Eigenschaftenfenster eingeben.
Option Explicit
Function LogError(errData As ErrObject)
Dim UName As String, WBName As String, lz As Long
UName = Application.UserName
If PROT.[a1] = "" Then Call Blatt_einrichten
lz = [a65536].End(xlUp).Row + 1
With PROT
.Cells(lz, 1) = Date
.Cells(lz, 2) = Time
.Cells(lz, 3) = UName
.Cells(lz, 4) = Err.Source
.Cells(lz, 5) = Err.Number
.Cells(lz, 6) = Err.Description
.Columns.AutoFit
End With
End Function


Private Sub Blatt_einrichten()
With PROT
.[a1] = "Datum"
.[b1] = "Zeit"
.[c1] = "Benutzer"
.[d1] = "Fehlerquelle"
.[e1] = "FehlerNr."
.[f1] = "Fehler"
.Rows(1).Font.Bold = True
End With
End Sub

Sub TestFehlerLog()
Dim intX As Integer, intY As Integer, intZ As Integer
intY = 100
intX = 1000
On Error GoTo errFehlerLog
intX = intY / 0
Exit Sub
errFehlerLog:
LogError Err
End Sub


Gruß K.Rola
Anzeige
ohhhh
14.01.2004 23:40:28
jonathan
hey, ich weiß nicht, wie ich dir danken soll!!!

aber trotzdem habe ich noch eine bitte:
kannst du mir nochmal die fragen von eben zu diesem Code beantworten?
ich blick schon da nicht mehr durch!!!!!!
wohin etc......

Jonathan
AW: ohhhh
14.01.2004 23:43:24
K.Rola
Hallo,
die beiden oberen Codes in ein Standardmodul, alles andere wie gehabt.
Der Dritte Code ist ja nur zum Testen.
Gruß K.Rola
AW: HAMMER!!!!!!!
14.01.2004 23:58:05
jonathan
ich habe PROT als sheet def.
Dim PROT as Sheets
sonst ging es nicht
nur meldet er mir jetzt immer mehr fehlermeldungen
PROT.a1 usw methode nicht gefunden.......
ich habe die beiden oberen in ein modul geschrieben
test auch, dann ausgeführt......
was stimmt daran nicht?
Jonathan
Anzeige
AW: HAMMER!!!!!!!
15.01.2004 00:06:09
K.Rola
Hallo,
schwieriger Patient!
Im Projektexplorer z.B. Tabelle1 anklicken und im Eigenschaftenfenster
statt Tabelle1 PROT eingeben.
Gruß K.Rola
danke, danke, danke
15.01.2004 00:12:46
jonathan
und nochmals danke! ;-)
dachte, wenn ich ein sheet normal umbenenne, dass es reichen würde -

wünsche Dir eine gute Nacht!
PS klappt jetzt alles!!!!!!!

Jonathan
AW: Fehler protokolieren
14.01.2004 22:18:54
jonathan
hey, :-(
ich sitz hier und warte und freu mich auf ein beispiel!
;-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige