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
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.
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.
Dateiupload bitte im Forum! So geht es:
Klick mich!" height=35" align="left" alt="Grußformel">
Dateiupload bitte im Forum! So geht es: Klick mich!" height=35" align="middle" alt="Beverly's Excel - Inn">
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
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.
Dateiupload bitte im Forum! So geht es:
Klick mich!" height=35" align="left" alt="Grußformel">
Dateiupload bitte im Forum! So geht es: Klick mich!" height=35" align="middle" alt="Beverly's Excel - Inn">
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 ;)
end if
on error goto 0
''code geht weiter
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
Dateiupload bitte im Forum! So geht es:
Klick mich!" height=35" align="left" alt="Grußformel">
Dateiupload bitte im Forum! So geht es: Klick mich!" height=35" align="middle" alt="Beverly's Excel - Inn">
Hallo Chris, hallo Karin,
vielen Dank - werde ich einmal entsprechend ausprobieren... :)
lg und schönes Wochenende
Olli
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