Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Benachrichtigung bei Fehler in Makro
#1
Hallo zusammen,

ich hoffe ihr könnt mir wieder einmal bei einem Problem weiterhelfen.
Ich habe ein Makro das in der Nacht via "Geplante Tasks" auf einem Server 2003 läuft.
Das Makro öffnet, aktualisiert und speichert immer einige Dateien.

Meistens macht es das auch tadellos, aber hin und wieder bleibt das Makro irgendwo hängen.

Meistens sind irgendwelche bereits geöffneten Dateien schuld die von den Benutzern am Vortag nicht geschlossen wurden oder sowas...

Ich könnte nun natürlich einfach ein

Code:
On Error Resume Next

einbauen und drauf hoffen, dass es am nächsten Tag wieder alles passt.
Super wäre allerdings wenn ich irgendeine Benachrichtigung erhalten würde, dass das Makro nicht korrekt durchgelaufen ist (Mail?).

Meistens schaue ich nicht täglich auf den Server und daher kann es sein, dass mir das dann einige Tage entgeht...

Vielleicht hat ja jemand eine gute Idee für mich.

Danke und lg

Olli
to top
#2
Hallo Olli,

(14.05.2014, 11:21)friedensbringer schrieb: Super wäre allerdings wenn ich irgendeine Benachrichtigung erhalten würde, dass das Makro nicht korrekt durchgelaufen ist (Mail?).

die Schwierigkeit ist, wenn das Makro hängt und auf das Schließen einer Datei wartet, kann es ja nicht gleichzeitig ein Mail verschicken.
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#3
Hi Olli,

weshalb prüfst du nicht mit dem Makro vorab, ob nur die benötigten Arbeitsmappen geöffnet sind? Falls noch andere offen sind, dann diese schließen.


GrußformelBeverly's Excel - Inn
Ein Fragesteller sollte Antworten gründlich und komplett lesen und nicht nur die für ihn angenehmen Teile.
to top
#4
Hallo Ralf, hallo Karin,

danke für die Infos. Gibt es denn via VBA eine Möglichkeit die geöffneten Excel Dateien zu schließen wenn diese auf einem anderen PC geöffnet sind?
Wie erwähnt läuft das Skript ja auf einem Server und die Dateien sind meistens bei irgendjemandem der vergessen hat die Datei zu schließen auf einem Client im Netzwerk geöffnet...

Eine anderen Alternative wäre eventuell wie von Karin vorgeschlagen vorab zu prüfen ob die Datei geöffnet ist und wenn dies der Fall sein sollte dann das Makro nur für diese Datei "auszusetzen" aber alle anderen Dateien zu aktualisieren...

Vielleicht hat hier ja jemand noch eine Idee bzw. Code für mich, untenstehend einmal der entsprechende Teil aus meinem Makro...

Code:
For loi = 2 To loletzte
        
        ez = Timer 'Timer für Makrodauer starten
        
        dateiname = Cells(loi, 2).Value 'Dateiname auslesen
        
        Cells(loi, 2).FormulaR1C1 = dateiname 'Dateiname nochmals als Formel in Zeile schreiben
        
        Cells(loi, 3).Value = Mid(dateiname, Len(dateiname) - InStr(StrReverse(dateiname), ".") + 2) 'Dateiendung auslesen

        If Sheets("01-Quellfiles").Cells(loi, 2).Value <> "" And Sheets("01-Quellfiles").Cells(loi, 3).Value <> "bat" Then

            'Dateiname auswählen

            reihenfolge = Cells(loi, 1).Value
            dateiname = Cells(loi, 2).Value
        
        '   Pfad muss angegeben werden, damit die Datei geöffnet werden kann
            Workbooks.Open Filename:=dateiname
            ActiveWorkbook.RefreshAll
            SendKeys "^%{F5}", True                  'STRG+ALT+F5 drücken
            Calculate
            Application.Calculation = xlCalculationAutomatic
            ActiveWorkbook.Save
            
'            ActiveWindow.Close

            Windows("Skripte.xlsm").Activate

            'Haken setzen wenn Datei geöffnet / neu berechnet und gespeichert wurde
            Range("D" & loi).Select
            ActiveCell.FormulaR1C1 = "þ"
            
        End If
        
        Sheets("01-Quellfiles").Range("E" & loi).Value = Round((Timer - ez) / 60, 2) '& " Minuten"
    
    Next loi

Vielen Dank und lg

Olli
to top
#5
Hi Olli,

ich hatte bei meinem Vorschlag nicht bedacht, dass man m.W. keine Arbeitsmappe schließen kann, die auf einem anderen Rechner geöffnet ist (ich lasse mich aber gene eines besseren belehren). Deshalb bleibt nur diese Variante: im Code prüfen, ob die durchlaufene Datei die "gewünschte" ist, andernfalls diese Datei nicht bearbeiten.


GrußformelBeverly's Excel - Inn
Ein Fragesteller sollte Antworten gründlich und komplett lesen und nicht nur die für ihn angenehmen Teile.
to top
#6
Hi,

mit
On Error Resume Next
sollte mit Bedacht umgegangen werden. Wenn die Ursachen dafür bekannt sind eben diese behandeln.

Ich nutze aber on error resume next manchmal in Verbindung mit

on error resume next
'Codeteile
if err.number <> 0 then 'oder eine spezielle Nummer abfragen
'dann mache was auch immer z.B Mail verschicken Wink
end if
on error goto 0
''code geht weiter
lg Chris
Feedback nicht vergessen.
3a2920576572206973742064656e20646120736f206e65756769657269672e
 ?mage

to top
#7
Hi Olli,

nach diesem Prinzip:

Code:
Dim wkbMappe As Workbook
   Dim blnOffen As Boolean
   For loI = 2 To loletzte
      ez = Timer 'Timer für Makrodauer starten
      dateiname = Cells(loI, 2).Value 'Dateiname auslesen
      For Each wkbMappe In Workbooks
         If wkbMappe.Name = dateiname Then
            blnOffen = True
            Exit For
         End If
      Next wkbMappe
      If blnOffen = False Then
      
         '...hier deinen auszuführenden Code
      
      End If
      blnOffen = False
   Next loI


GrußformelBeverly's Excel - Inn
Ein Fragesteller sollte Antworten gründlich und komplett lesen und nicht nur die für ihn angenehmen Teile.
to top
#8
Hallo Chris, hallo Karin,

vielen Dank - werde ich einmal entsprechend ausprobieren... Smile

lg und schönes Wochenende

Olli
to top
#9
Hallo Olli,

ob eine Datei von jemandem geöffnet ist, kannst Du so prüfen:

http://www.xltips.de/ftxt/vba-pur/File/FileOpened.html

Schließen kannst Du sie leider nur, wie Karin schon schreibt, bei Dir und nicht anderswo bzw. bei einem anderen Nutzer ;-).
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#10
Hallo zusammen,

noch eine Frage - ich habe in derselben Datei ein Makro, das mir Dateien von verschiedenen Orten an einen bestimmten Platz kopiert.
Meistens funktioniert das einwandfrei, aber manchmal erhalte ich da eine Meldung:

Laufzeitfehler '70':
Zugriff verweigert

Kann mir hier noch jemand helfen wie ich den Code umbauen müsste, damit die entsprechende Datei einfach ausgelassen wird und kein Haken in Spalte D gesetzt wird sondern diese leer bleibt:

Code:
FileCopy strOldPath, strNewPath 'Hier tritt teilweise der Fehler auf
        
'Haken setzen wenn Datei geöffnet / neu berechnet und gespeichert wurde
Range("D" & loi).Select
ActiveCell.FormulaR1C1 = "þ"

Vielen Dank und lg

Olli
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  E-Mail Benachrichtigung nach Änderung an einer Excel-Datei mrmbj 1 84 11.11.2016, 17:09
Letzter Beitrag: schauan
  Fehler in Formel//HILFE! Svenja94 5 86 11.11.2016, 12:23
Letzter Beitrag: Svenja94
  Ich finde den Fehler nicht Usedom 8 175 09.11.2016, 14:07
Letzter Beitrag: snb
  excel summewenn, zählenwenns Fehler MeKeMo 1 83 06.11.2016, 13:00
Letzter Beitrag: shift-del
  "Fehler"-Berechnung in Excel Biologist 2 234 24.08.2016, 08:14
Letzter Beitrag: Biologist
  Fehler bei der Aktualisierung Fred B 3 275 14.07.2016, 11:22
Letzter Beitrag: Fred B
  WENN-Formel | Wo liegt der Fehler?! :-) Frantix27 14 593 29.06.2016, 11:26
Letzter Beitrag: BoskoBiati
  Fehler: Quelle nicht gefunden Chrilli13 3 519 25.06.2016, 10:38
Letzter Beitrag: schauan
  Verschachtelung Fehler Daniel Hemp 4 333 19.05.2016, 17:12
Letzter Beitrag: Kuwer
  Fehler in der Formel ignorieren (DIV/0) [2007/365] die eule 6 538 17.05.2016, 22:39
Letzter Beitrag: shift-del

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste