Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> 26. März: Office-Treffen Rhein-Main <-
Fehlerbericht erstellen
zurück: ***! Makro rutscht nicht mit !*** weiter: Case select verschachteln Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
mark28
Im Profil kannst Du frei den Rang ändern


Verfasst am:
02. Apr 2008, 15:18
Rufname:

Fehlerbericht erstellen - Fehlerbericht erstellen

Nach oben
       Version: Office 2003

Guten Tag,

ich benötige Hilfe bei meiner kleinen VBA Programmierung

Ich habe eine Fehlerberichterstattung programmiert, die beim autreten eines Fehlers eine E-Mail an den Admin mit folgenden Daten versendet:

- Fehlerbeschreibung (err.description)
- Aktuelle Zellenposition
- Aktuelles Tabellenblatt
- einen Screenshot
- Datum
- Benutzer
- Dateipfad
- Dateinamen

Mein Problem ist, das diese Berichte nicht besonders aussagekräftig sind.
Ich benötige den Namen des Makros, in dem der Fehler aufgetreten ist und die Zeile des Codes der den Fehler verursacht hat.

für jede Hilfe wäre ich sehr Dankbar.

Anbei der Code:

Code:
Option Explicit
Public Declare Sub keybd_event Lib "User32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)


Code:
Sub Makro1()
'Beispielmakro zur Überwachung von Fehlern

'Variablendefinition
Dim fehler
Dim janein

'Sicherheitsschleife Start
On Error GoTo fehler

    ActiveCell.FormulaR1C1 = "jkh"
   
'Sicherhietsschleife Ende
End

fehler:
'Screenshot machen
keybd_event &H2C, 1, 0, 0
DoEvents

'Fehlermeldung anzeigen
MsgBox Err.Description

'Abfrage ob Fehlerbericht gesendet werden soll
janein = MsgBox("Wollen Sie einen Fehlerbericht an den Admin senden?", vbYesNo)

'Fehlerberichtprogrammteil ausführen
If janein = 6 Then
    Call Fehlerbericht
End If

End Sub


Code:
Sub Fehlerbericht()
'Fehlerberichterstellung und Versenden über E-Mail an Admin

'Benutzeransicht sperren
Application.ScreenUpdating = False
Application.EnableEvents = False

'Variablendefinition
Dim areihe
Dim aspalte
Dim Emailxls
Dim Dateiname
Dim Dateipfad
Dim makroname

'Variablen Wert zuweisen
areihe = ActiveCell.Row
aspalte = ActiveCell.Column
Dateiname = ActiveWorkbook.name
Emailxls = "C:\Dokumente und Einstellungen\" & Environ("username") & "\Desktop\Fehlerbericht_" & Sheets(1).name & "_" & Date & ".xls"
Dateipfad = ActiveWorkbook.Path
makroname = "Makro1"

'Tabellenblatt erstellen
Workbooks.Add

'Screenshot einfügen
ActiveSheet.Paste
ActiveWindow.DisplayGridlines = False
ActiveWindow.Zoom = 50

'Zwischenspeichern
ActiveWorkbook.SaveAs Filename:=Emailxls
ActiveWorkbook.Close SaveChanges:=False

'Email versenden
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
    'Empfänger
    .Recipients.Add "admin@web.de"
    'Betreff
    .Subject = "Fehlermeldung"
    'Nachricht
    .Body = "Fehlerbericht: " & Sheets(1).name & vbCrLf & vbCrLf & "Benutzer: " & Environ("username") & vbCrLf & "Datum: " & Date & vbCrLf & vbCrLf & "Aktive Tabelle: " & Sheets(1).name & vbCrLf & "Aktive Reihe: " & areihe & vbCrLf & "Aktive Spalte: " & aspalte & vbCrLf & "Fehler in Makro: " & makroname & vbCrLf & vbCrLf & "Fehlerbeschreibung: " & vbCrLf & "-------------------------------------------------" & vbCrLf & Err.Description
    'Lesebestätigung aus
    .ReadReceiptRequested = False
    'Dateianhang
    .attachments.Add Emailxls
    .Send
End With
Set olApp = Nothing
   
'Fehlerbericht löschen
Kill Emailxls
   
'Benutzeransicht zurücksetzten
Windows(Dateiname).Activate
Cells(areihe, aspalte).Select
   
'Benutzeransicht öffnen
Application.ScreenUpdating = True
Application.EnableEvents = True
   
End Sub


Gruß Mark
RO_SCH
Mädchen für alles


Verfasst am:
02. Apr 2008, 19:46
Rufname: Roland
Wohnort: Nürnberg


AW: Fehlerbericht erstellen - AW: Fehlerbericht erstellen

Nach oben
       Version: Office 2003

Hi mark28,

um das aktuelle Codemodul in dem der Fehler auftritt zu erhalten,
definiere makroname in der Fehlerroutine, bevor du die Fehlerbehandlung
aufrufst, mit

makroname = Application.VBE.ActiveCodePane.CodeModule

und übergib 'makroname' als Variable an die Prozedur. Viel mehr wird da nicht möglich sein, ohne eine rießige Fehlerüberwachungs-Klasse zu schreiben.

_________________
De nihilo nihil fit

Gruß Roland
mark28
Im Profil kannst Du frei den Rang ändern


Verfasst am:
03. Apr 2008, 08:32
Rufname:

AW: Fehlerbericht erstellen - AW: Fehlerbericht erstellen

Nach oben
       Version: Office 2003

Vielen Dank für Deine Hilfe

Das mit der Variable hab ich getestet. Mann muss zwar die Sicherheitseinstellungen ein wenig ändern (Vertrauen von ...) aber sonst gehts.

Leider gibt mir der Code nur das Modul, in den die Prozedur liegt wieder.
Gibt es eine Moglichkeit den Namen des momentan aktiven Prozedur auszugeben?

Beim probieren hab ich die Eigenschaft

Application.VBE.ActiveCodePane.CodeModule.CountOfLines

gefunden. Die gibt die Anzahl der Zeilen im Modul wieder. Geht das auch für die aktuelle Zellenpos?

Vorab Danke für Deine Antwort

Gruß Mark
RO_SCH
Mädchen für alles


Verfasst am:
04. Apr 2008, 15:23
Rufname: Roland
Wohnort: Nürnberg

AW: Fehlerbericht erstellen - AW: Fehlerbericht erstellen

Nach oben
       Version: Office 2003

Hi Mark,

Function und Subs werden in VBA nicht einzeln genommen. Das sind einfach CodeLines im Modul.

so weit ich das schon mal probiert habe, geht das so nicht, denn du bleibst ja nicht in der Zeile mit dem Fehler stehen, sondern läufst in den ErrorHandler hinein, der ja schon wieder in einer anderen Zeile steht.

Die einzige Chance wäre eine Fehlerroutine zu schreiben, die aus einer Klasse überwacht, ob ein Fehler auftritt - so ähnlich wie Microsoft selbst die Fehler abfängt und dann eine Meldung ausgibt - da das jedoch relativ kompliziert ist, dürfte sich das für durchschnittliche Excel-Programmierung aber wohl kaum rentieren.

_________________
De nihilo nihil fit

Gruß Roland
mark28
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Apr 2008, 11:20
Rufname:


AW: Fehlerbericht erstellen - AW: Fehlerbericht erstellen

Nach oben
       Version: Office 2003

Vielen Dank für Deine Antwort.

Hab mir jetzt überlegt, dass ich eine Hilfsvariable im Code mitlaufen lasse.

Z=1
Code
z=z+1
Code
z=z+1
Code
z=z+1
Code
z=z+1

Diese Variable und den Makronamen (per Hand eingetragen) übergebe ich dann an die Fehlerberichterstattung.

Ist zwar recht aufwendig aber führt zu einer Lösung.

Danke nochmal

Gruß Mark
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen




Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel VBA (Makros): Verzeichnis erstellen 23 corum 220 07. März 2010, 08:10
corum Verzeichnis erstellen
Keine neuen Beiträge Excel Auswertungen: Liniendiagramm aus Zellen mit Formeln erstellen 11 La Panadera 209 10. Feb 2010, 15:04
La Panadera Liniendiagramm aus Zellen mit Formeln erstellen
Keine neuen Beiträge Excel Auswertungen: kategoriales Blasendiagramm erstellen 0 MXL 306 20. Jul 2009, 19:16
MXL kategoriales Blasendiagramm erstellen
Keine neuen Beiträge Excel Auswertungen: Diagramme in Excel 2007 so erstellen wie in Excel 2003 5 Mani_89 1443 02. März 2009, 05:38
Mani_89 Diagramme in Excel 2007 so erstellen wie in Excel 2003
Keine neuen Beiträge Excel Formeln: Dynamische dropdown Liste erstellen 5 Gast 1235 11. Nov 2008, 16:15
neopa Dynamische dropdown Liste erstellen
Keine neuen Beiträge Excel VBA (Makros): *Pro* Click-Ereignis zur Laufzeit zuordnen / erstellen 11 SeppelFred 404 17. Jul 2008, 15:07
TypMens *Pro* Click-Ereignis zur Laufzeit zuordnen / erstellen
Keine neuen Beiträge Excel VBA (Makros): tabellenblätter erstellen und namen vergeben 1 Gast 312 08. Mai 2008, 20:53
losgehts tabellenblätter erstellen und namen vergeben
Keine neuen Beiträge Excel Formeln: SVerweis, Ende der Matrix variabel erstellen 4 Shranks 1121 18. Apr 2008, 16:06
Shranks SVerweis, Ende der Matrix variabel erstellen
Keine neuen Beiträge Excel Hilfe: "Master"-Adressdatei erstellen und verknüpfen 3 HinzundKunz 409 19. Nov 2007, 18:45
Thomas Ramel "Master"-Adressdatei erstellen und verknüpfen
Keine neuen Beiträge Excel Auswertungen: Mit Sollwert (16,20€) durchgehende Linie erstellen 4 Gast 1324 25. Jul 2007, 09:48
Gast Mit Sollwert (16,20€) durchgehende Linie erstellen
Keine neuen Beiträge Excel VBA (Makros): "Bitte warten"-Fenster erstellen? 8 Zonk 4048 27. Sep 2006, 10:57
Zonk "Bitte warten"-Fenster erstellen?
Keine neuen Beiträge Excel Hilfe: Ligatabelle mit Excel automatisch erstellen. 5 SoulRISE 3753 25. Aug 2006, 20:46
ransi Ligatabelle mit Excel automatisch erstellen.
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML CSS