Anzeige
Archiv - Navigation
1632to1636
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen