Collapse column

Autor Thema: Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen  (Gelesen 5926 mal)

Offline Tim1711

  • Newbie
  • *
  • Beiträge: 10
    • Profil anzeigen
  • Office-KnowHow: Amateur
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2013
Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« am: August 11, 2016, 07:59:16 Vormittag »
Hallo liebe Leute,

Ich habe ein Problem das schon öfters in Foren diskutiert wurde, allerdings konnte ich keine Lösung finden die mich weiter gebracht hat.
Ich hoffe ihr könnt mir helfen..

Zum Makro:

Es geht darum, dass Excel mittels externer Daten einen Report als .html erstellt und speichert, danach schließt Excel sich wieder von selbst. Da das ganze auf einer VM läuft, soll es eigenständig arbeiten (VM ist immer an). Da die Möglichkeit besteht dann man einmal zeitgleich an dem Report arbeitet und eventuell nicht möchte, dass er geschlossen wird, kommt nach 15 Sekunden eine UserForm auf sich ein Button und ein Timer läuft.
Wenn man den Timer durchlaufen lässt und den Button nicht drückt, schließt sich Excel selbst.
Das Ganze soll dann mit dem Task Scheduler von Windows zu bestimmten Zeiten automatisch passieren.

Das Makro an sich funktioniert tadellos.

Problem ist, dass der Scheduler das Excel Workbook öffnet, das aber im Hintergrund ist und dadurch der Timer nicht losläuft, da das Fenster aktiv sein muss um den Timer zu starten.

Deshalb meine Frage, wie man Excel oder die Userform in den Vordergrund bringen kann?

Hilfe bin schon am verzweifeln!

Auf der VM befindet sich Office 2013 und Windows 10 Enterprise 64-Bit falls das hilft...

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #1 am: August 11, 2016, 09:00:34 Vormittag »
Hallo,

Zitat
Problem ist, dass der Scheduler das Excel Workbook öffnet, das aber im Hintergrund ist und dadurch der
Timer nicht losläuft, da das Fenster aktiv sein muss um den Timer zu starten.

Ob ich weiterhelfen kann, weiss ich noch nicht, aber wie sieht der Code zum Timer aus?
Und, ist denn das Excel-Fenster sichtbar, oder nicht?

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline Tim1711

  • Newbie
  • *
  • Beiträge: 10
    • Profil anzeigen
  • Office-KnowHow: Amateur
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2013
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #2 am: August 11, 2016, 09:16:18 Vormittag »
Timer Code:

Public Sub RunTimer()
    If nTime > 0 Then
        nTime = nTime - 1
        UserForm1.Label3.Caption = Format(TimeSerial(0, 0, nTime), "hh:mm:ss")
        Application.OnTime Now + TimeValue("00:00:1"), "RunTimer"
    ElseIf (nTime = 0) And (shutting_state = True) Then
        Unload UserForm1
        ExcelAus                'Excel wird ausgeschalten
    Else
                               'NOP
    End If
End Sub

Wenn der Scheduler Excel öffnet ist es sichtbar, aber nicht aktiv und das ist das Problem

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #3 am: August 11, 2016, 09:21:40 Vormittag »
Hallo,

Danke für den Code; Standardtimer. Versuche erstmal das Aktivieren zu erzwingen...

Code: Visual Basic
  1.   Private Sub Workbook_Open()
  2.    
  3.     Application.Windows(1).Activate
  4.     ThisWorkbook.Activate
  5.    
  6.   End Sub
  7.  

Der Code muss in das Codemodul zu "Diese Arbeitsmappe". Falls die Prozedur Workbook_Open schon vorhanden ist,
dann nur die zwei Zeilen hinzufügen. Ggf auch nur die erste Zeile Application.Windows(1).Activate. Musst Du testen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline Tim1711

  • Newbie
  • *
  • Beiträge: 10
    • Profil anzeigen
  • Office-KnowHow: Amateur
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2013
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #4 am: August 11, 2016, 09:31:42 Vormittag »
es funktioniert leider immer noch nicht.. Excel blinkt nur fröhlich in der Taskleiste rum anstatt in den Vordergrund zu springen

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #5 am: August 11, 2016, 09:40:11 Vormittag »
Hallo,

ok, dann versuchen wir es nachher anders mit Windows API.
Was für ein Betriebssystem (Windows 32 Bit oder 64 Bit) und Excel in welcher Bit-Version (32, 64) hast Du?
Excel Bit Version findest Du unter Datei/Konto/Über Excel.

Muss jetzt erstmal weg und melde mich dann wieder.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline Tim1711

  • Newbie
  • *
  • Beiträge: 10
    • Profil anzeigen
  • Office-KnowHow: Amateur
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2013
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #6 am: August 11, 2016, 09:47:12 Vormittag »
Hallo,

ich habe ein 64-bit Betriebssystem und die 32-Bit Excelversion

danke für die Hilfe!

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #7 am: August 11, 2016, 17:40:37 Nachmittag »
Hallo,

hat etwas länger gedauert und bin nun wieder da. Versuche mal folgenden Code im Modul DieseArbeitsmappe.

Code: Visual Basic
  1.   Option Explicit
  2.  
  3. ' API...
  4.  
  5.   Private Declare PtrSafe Function apiFindWindow Lib "user32" _
  6.           Alias "FindWindowA" (ByVal lpClassName As Any, _
  7.           ByVal lpWindowName As String) As LongPtr
  8.  
  9.   Private Declare PtrSafe Function apiSetWindowForeground Lib "user32" _
  10.           Alias "SetForegroundWindow" (ByVal hwnd As LongPtr) As Long
  11.  
  12.   Private Sub Workbook_Open()
  13.    
  14.     Dim h As LongPtr
  15.    
  16. '   Errors...
  17.    
  18.     On Error Resume Next
  19.    
  20. '   Activate...
  21.    
  22.     h = apiFindWindow(0&, ThisWorkbook.Name & " - Excel")
  23.    
  24. '   Debug...
  25.    
  26.     Debug.Print h
  27.    
  28. '   Check...
  29.    
  30.     If h <> 0 Then
  31.      
  32.       apiSetWindowForeground h
  33.      
  34.     End If
  35.    
  36.   End Sub

Ggf. entsprechend in vorhandenen Code einbauen. Testen kann ich das momentan nicht,
also nicht mit denselben Bedingungen wie Du. Falls das bei Dir klappt, kannst Du dann die
Zeile Debug.Print h löschen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline Tim1711

  • Newbie
  • *
  • Beiträge: 10
    • Profil anzeigen
  • Office-KnowHow: Amateur
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2013
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #8 am: August 12, 2016, 09:06:50 Vormittag »
Danke ich werde es mal versuchen und melde mich dann

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline Tim1711

  • Newbie
  • *
  • Beiträge: 10
    • Profil anzeigen
  • Office-KnowHow: Amateur
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2013
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #9 am: August 12, 2016, 10:04:13 Vormittag »
Es klappt super, vielen dank!

ich hatte zwar noch ein kleines Problem dass der Task Scheduler nicht die Excel Datei öffnen wollte, sondern nur Excel, aber das habe ich über eine .bat gelöst.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2013: Excel mit VBA-Befehl in den Vordergrund bringen
« Antwort #10 am: August 12, 2016, 14:29:46 Nachmittag »
Hallo,

ok, prima. Ansonsten hätten wir einen API-Timer schreiben müssen, das ist ein bißchen komplizierter.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.