Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro ausführen wenn Windows gesperrt

Makro ausführen wenn Windows gesperrt
06.07.2018 07:09:36
Monal
Guten Morgen Zusammen,
kann mir jemand weiterhelfen? Ich hoffe es gibt eine Lösung für mein Problem :)
Ist-Situation:
Windows ist gesperrt (das ich auch richtg so)
Ich lass per Aufgabenplaner täglich um 17:55 meine Excel Datei öffnen. Das klappt auch. Jetzt sollte mit einem Befehl meine Makros ausgeführt werden um 18:00 Uhr. Das funktioniert leider nicht.
Mein Code (in Tabelle1)
Sub Start()
Application.OnTime "18:00:00", "Datei_leeren"
End Sub
Kann man das so einstellen das er das auch ausführt wenn ich nicht an Windows aktiv bin?
Mit Workbook_Open kann ich leider nicht arbeitern da im Makro SendKeys verwendet werden.
Vielleicht wäre es eine Alternative an dem VBA mit send Keys zu arbeiten?
Ich musste das verwenden damit ich eine Excel Datei aus dem Internet speichern kann
Wäre um jeden Hinweis dankbar :)
Liebe Grüße und einen schönen Start in den Tag!
Monal
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro ausführen wenn Windows gesperrt
06.07.2018 07:50:35
Martin
Hallo Monal,
ich sehe hier mehrere Möglichkeiten. Aber der einfachste Weg ohne API wäre wohl:
    Dim dteNow As Date, dteTime As Date
dteTime = TimeSerial(18, 0, 0)
Do
dteNow = Time
DoEvents
Loop Until dteNow >= dteTime
Ich finde das Makro etwas unglücklich, weil unnötig Systemressourchen beansprucht werden. Ich würde eine IF-Abfrage im "Workbook_Open"-Ereignis einbauen, ob der Rechner gesperrt ist oder nicht.
Unabhängig von allem würde ich auf "Send Keys" vollständig verzichten, weil das so ziemlich die unsauberste und fehleranfälligste Anweisung ist.
Viele Grüße
Martin
Anzeige
AW: Makro ausführen wenn Windows gesperrt
06.07.2018 07:57:17
Monal
Hallo Martin,
Vielen lieben Dank für deine schnelle Antwort.
Ja das hab ich mir schon gedacht. Ich weiß allerdings nicht wie ich das anders lösen könnte.
Hier mein Code der ausgeführt werden soll. Vielleicht hast du eine andere Idee?
Leider erzeugt der Donwload keine andere URL an.
Könnte daran liegen das eine Firmen Datenbank ist die über das Internet läuft?
Musste leider die genaue Adresse sowie Benutzer und Passwort Xen, du versehst :)
Sub MMDB_Öffnen_einloggen_Daten_exportieren()
Dim IEApp As Object
Dim IEDocument As Object
folder = "C:\Users\slebsi9\Downloads"
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate "https://mmdb.in.xxxx.xxxx/?db=ek313"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Set IEDocument = IEApp.Document
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("loginForm:btn-switch-user-pass").Click
Do: Loop Until IEDocument.readyState = "complete"
Application.Wait Now + TimeSerial(0, 0, 3)
IEDocument.getElementById("loginForm:username").Value = "xxxxx"
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("loginForm:password").Value = "xxx"
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("loginForm:btn-login").Click
Do: Loop Until IEDocument.readyState = "complete"
Application.Wait Now + TimeSerial(0, 0, 3)
IEDocument.getElementById("transducerOverviewButtonForm:extendedSearch_selectSearch_4").Click
Do: Loop Until IEDocument.readyState = "complete"
Application.Wait Now + TimeSerial(0, 0, 3)
IEDocument.getElementById("transducerOverviewButtonForm:j_idt53").Click
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("transducerExport:entityExportForm:buttonExport").Click
Application.Wait Now + TimeSerial(0, 0, 15)
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("transducerExport:exportDownloadForm:buttonDownload").Click
Application.Wait (Now + TimeValue("0:00:20"))
Application.SendKeys "%S", True
Application.SendKeys "%n", True
Application.Wait Now + TimeValue("00:00:10") '5 Sekunden warten
IEApp.Quit
Call Datei_öffnen
End Sub

Viele Grüße, Monal
Anzeige
AW: Makro ausführen wenn Windows gesperrt
06.07.2018 08:19:06
Monal
Jetzt bin ich gleich so verwirrt das ich gar nicht weiß wo ich deinen Code einfügen soll das es funktioniert.
Heißt das ich soll meinen löschen?
Sorry ich steh gerade komplett auf dem Schlauch
Liebe Grüße
AW: Makro ausführen wenn Windows gesperrt
06.07.2018 22:06:18
Monal
Hallo,
nochmal zu meinem Problem da noch nicht gelöst. Mir ist jetzt ein anderer Weg eingefallen.
Habe Mozilla Firefox zu meinem Standartbrowser gemacht und Download ohne Abfrage eingestellt.
Somit entfallen die Send Keys Befehle.
Habe es auch geschafft das die Seite in Firefox gestartet wird. Nur weiß ich jetzt nicht weiter wie ich die Befehle ausführen kann wie im Code festgelegt.
Wahrscheinlich liegt es daran das es keine "IE" Befehle sind in Firefox?
Kann mir hierbei jemand helfen?
Vielen lieben Dank schon mal und liebe Grüße
Sub MMDB_Öffnen_einloggen_Daten_exportieren()
Dim IEApp As Object
Dim IEDocument As Object
Dim E
E = Shell("C:\Program Files (x86)\Mozilla Firefox\firefox.exe " & _
"https://xxxxx/xxxxxx", vbMaximizedFocus)
Set IEDocument = IEApp.Document
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("loginForm:btn-switch-user-pass").Click
Do: Loop Until IEDocument.readyState = "complete"
Application.Wait Now + TimeSerial(0, 0, 3)
IEDocument.getElementById("loginForm:username").Value = "xxxx"
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("loginForm:password").Value = "xxxx"
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("loginForm:btn-login").Click
Do: Loop Until IEDocument.readyState = "complete"
Application.Wait Now + TimeSerial(0, 0, 3)
IEDocument.getElementById("transducerOverviewButtonForm:extendedSearch_selectSearch_4").Click
Do: Loop Until IEDocument.readyState = "complete"
Application.Wait Now + TimeSerial(0, 0, 3)
IEDocument.getElementById("transducerOverviewButtonForm:j_idt53").Click
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("transducerExport:entityExportForm:buttonExport").Click
Application.Wait Now + TimeSerial(0, 0, 15)
Do: Loop Until IEDocument.readyState = "complete"
IEDocument.getElementById("transducerExport:exportDownloadForm:buttonDownload").Click
Application.Wait (Now + TimeValue("0:00:20"))
IEApp.Quit
Call Datei_öffnen
End Sub

Anzeige
AW: Makro ausführen wenn Windows gesperrt
06.07.2018 09:27:31
Martin
Hallo Mona,
ersetze dein Makro einfach durch folgendes Makro:
Sub Start()
Dim dteNow As Date, dteTime As Date
dteTime = TimeSerial(18, 0, 0)
Do
dteNow = Time
DoEvents
Loop Until dteNow >= dteTime
Call Datei_leeren
End Sub
Der Internet Explorer wird ja schon gut über die Objektbibliothek angesteuert. Ich verstehe, dass der Download hier etwas schwieriger ist. Vielleicht befindet sich der Download-Link im Quelltext der Website?! - Dann könntest du den Downloadlink der Datei einfach auslesen und die Datei direkt per VBA herunterladen (...sogar in das passende Zielverzeichnis).
Viele Grüße
Martin
Anzeige
AW: Makro ausführen wenn Windows gesperrt
06.07.2018 14:08:39
Monal
der Code funktioniert bei mir leider nicht :(
Erhalte die Fehlermeldung
Laufzeitfehler '429':
Objekterstellung durch Active X-Komponente nicht möglich
Den Quelltext habe ich mir gerade anzeigen lassen. Phuuu da stehen ja viele Daten drinnen :)
Leider weiß ich gar nicht wo ich da anfangen soll zum suchen
Viele Grüße, Simone
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Makro ausführen, wenn Windows gesperrt ist


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub Start()
       Dim dteNow As Date, dteTime As Date
       dteTime = TimeSerial(18, 0, 0)
       Do
           dteNow = Time
           DoEvents
       Loop Until dteNow >= dteTime
       Call Datei_leeren
    End Sub
  4. Speichere dein Makro: Schließe den VBA-Editor und speichere die Excel-Datei als Excel-Makro-fähige Arbeitsmappe (*.xlsm).

  5. Teste das Makro: Lass es laufen, während dein Computer oder Windows gesperrt ist, um zu überprüfen, ob es funktioniert.


Häufige Fehler und Lösungen

  • Laufzeitfehler '429': Dieser Fehler tritt auf, wenn die Objekterstellung durch eine ActiveX-Komponente nicht möglich ist. Stelle sicher, dass alle benötigten Bibliotheken aktiviert sind und du die korrekte Version von Excel verwendest.
  • Makros werden nicht ausgeführt: Überprüfe, ob die Sicherheitseinstellungen in Excel so konfiguriert sind, dass Makros erlaubt sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen.

Alternative Methoden

Wenn dein Computer gesperrt ist und du dennoch sicherstellen möchtest, dass dein Excel-Makro ausgeführt wird, kannst du folgende Methoden in Betracht ziehen:

  1. Verwendung des Windows Aufgabenplaners: Plane die Ausführung deines Makros zu einem bestimmten Zeitpunkt. Stelle sicher, dass die Excel-Datei geöffnet ist, wenn der Aufgabenplaner das Makro ausführt.
  2. Verwende einen anderen Browser: Wenn du mit Internet Explorer Probleme hast, probiere Mozilla Firefox. Bei der Verwendung von Firefox musst du möglicherweise den Code anpassen, um die richtigen Funktionen anzusprechen.

Praktische Beispiele

Hier ist ein Beispiel, wie du das Makro anpassen kannst, um eine Datei herunterzuladen:

Sub MMDB_Öffnen_einloggen_Daten_exportieren()
    Dim IEApp As Object
    Dim IEDocument As Object
    Set IEApp = CreateObject("InternetExplorer.Application")
    IEApp.Visible = True
    IEApp.Navigate "https://mmdb.in.xxxx.xxxx/?db=ek313"
    Do: Loop Until IEApp.Busy = False
    Set IEDocument = IEApp.Document
    Do: Loop Until IEDocument.readyState = "complete"

    ' Hier deine Login- und Export-Befehle einfügen
    ' ...

    IEApp.Quit
End Sub

Tipps für Profis

  • Vermeide die Verwendung von SendKeys: Diese Methode ist anfällig für Fehler. Stattdessen solltest du direkt mit den Objekten im Internet Explorer arbeiten.
  • Verwende Fehlerbehandlungsroutinen in deinen Makros, um sicherzustellen, dass dein Code auch bei unerwarteten Fehlern funktioniert.
  • Teste deine Makros regelmäßig in einer sicheren Umgebung, bevor du sie in einer produktiven Umgebung verwendest.

FAQ: Häufige Fragen

1. Kann ich mein Excel-Makro ausführen, während mein Computer gesperrt ist?
Ja, wenn du das Makro über den Aufgabenplaner startest und die richtigen Einstellungen vornimmst.

2. Was kann ich tun, wenn mein Makro nicht funktioniert, während Windows gesperrt ist?
Überprüfe die Sicherheitseinstellungen und stelle sicher, dass alle benötigten Bibliotheken für das Makro aktiviert sind.

3. Ist es besser, Internet Explorer oder einen anderen Browser zu verwenden?
Es wird empfohlen, Internet Explorer zu verwenden, da dieser besser mit VBA interagiert. Wenn du jedoch auf Probleme stößt, kannst du auch Firefox verwenden, musst aber den Code anpassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige