im Prinzip habe ich im topic bereits alles wichtige erwähnt. Gibt es ein Makro welches auslöst, sobald Windows gesperrt wird (Win10) und dann das workbook vorher speichert?
Problem besteht bei der Arbeit, da wir dort diverse Rechner haben an denen man sich anmelden kann. Wenn man nun die Datei geöffnet lässt sperrt die sich damit und man sucht in der Folge den richtigen pc an dem man noch angemeldet ist. Einstellungen am pc selber kann ich keine ändern.
den "Windows Scheduler" einzustellen überlasse ich anderen, aber wenn mit dem Scheduler ein Workbook mit diesem Code gestartet wird, klappt es unter XL2016:
Code:
Sub F_en()
'Mappe1.xlsx ist offen 'ThisWorkbook wird neu gestartet (vom Scheduler) 'dieser Code sollte in Workbook.Open
'zum prüfen For i = 1 To Workbooks.Count Debug.Print Workbooks(i).Name Next i
With Workbooks("Mappe1.xlsx") .Sheets(1).Range("A2") = "neu" .Save .Close End With End Sub
mfg
(falls der Name des Workbooks nicht bekannt sein sollte, kann er auch in den Tasks gesucht werden (in MS Word: for each Ts in Tasks))
Vielen Dank für eure Rückmeldung. Wenn ich das richtig verstanden habe muss ich Einstellungen bei Windows vornehmen. Dies ist allerdings absolut unmöglich auf den arbeitsrechnern. Eine methode, bei der ich einzig in Excel arbeite gibt es dann so nicht?
Gibt es denn als Alternative einen code, mit dem Excel alle 30 Minuten speichert und die Mappe schließt? (zwischenfrage: wisst ihr aus dem Kopf ob das Schließen auch funktioniert wenn der pc gesperrt ist? Werde es sonst ausprobieren)
26.09.2018, 19:44 (Dieser Beitrag wurde zuletzt bearbeitet: 26.09.2018, 20:12 von Storax.)
Die folgende Funktion liefert den Status zurück
PHP-Code:
Option Explicit
Private Declare Function SwitchDesktop Lib "user32" (ByVal hDesktop As Long) As Long Private Declare Function OpenDesktop Lib "user32" Alias "OpenDesktopA" (ByVal lpszDesktop As String, ByVal dwFlags As Long, ByVal fInherit As Long, ByVal dwDesiredAccess As Long) As Long Private Declare Function CloseDesktop Lib "user32" (ByVal hDesktop As Long) As Long
Private Const DESKTOP_SWITCHDESKTOP As Long = &H100
Function desktopLocked() As String Dim p_lngHwnd As Long Dim p_lngRtn As Long Dim p_lngErr As Long Dim System As String
Vielen dank für deinen Beitrag. Habe momentan nur mein Handy dabei, kann deine datei also nicht testen. Mache ich dann aber morgen.
Kannst du mir noch kurz erklären was der Code genau macht? Der arbeitsrechner ist nämlich ziemlich eigen - sprich es ist kein speichern einer zwischen datei Oder so möglich. Also Excel darf wirklich nur auslesen.
Vielleicht kannst du ja in Worten kurz erklären was der Code genau macht. Danke
Die Datei schließt sich bei Inaktivität selbst nach 5 min. Eben nach diesen 5 min erscheint eine Userform in welcher ein Countdown von 10 runterzählt, wird der Countdown nicht unterbrochen speichert und schließt sich die Datei selbst.
Private Declare Function SystemParametersInfo _ Lib "user32" Alias _ "SystemParametersInfoA" _ (ByVal uAction As Long, _ ByVal uParam As Long, _ ByRef lpvParam As Long, _ ByVal fuWinIni As Long) As Long
Private Const SPI_GETSCREENSAVERRUNNING As Long = &H72
Sub Test()
If IsScrSaverRunning Then MsgBox "Screen Saver is active"