"WScript.Shell" Popup funktioniert oder funktioniert auch nicht?

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    "WScript.Shell" Popup funktioniert oder funktioniert auch nicht?

    Kann mir jemand weiterhelfen ich bin am verzweifeln? Kann so etwas sein?
    Ich möchte in einem VBA-Excel eine Routine haben, die eine Auswertung, Abrechnung oder ähnliches macht dann eine Zeit wartet und diese dann wiederholt, in der Zeit des Wartens soll dann die Möglichkeit des Abbruchs bestehen. Mit reinen VBA Befehlen soll so etwas nicht gehen, deshalb VBS. die Routine habe ich in VBS getestet funktioniert bei mir unter XP,Win7/32 und Win7/64. Hier der Code:

    Option Explicit
    Dim W_Shell
    Set W_Shell = CreateObject("WScript.Shell")
    Do
    ' hier steht Abrechnungslauf
    MsgBox "Nachricht!" ' nur zu Testzwecken
    loop while (1<> W_Shell.Popup("Programm abbrechen?" ,5 , "Abrechnungslauf" , 0 )) ' Zeit auf 5s gesetzt / 0 nur OK Buttom wird angezeigt
    MsgBox "Programmende"

    Jetzt habe ich diesen Code in eine VBA Prozedur übertragen. Hier der Code:

    Public Sub kb() ' kontinuierliches Berechnen - Hauptlauf
    Dim W_Shell
    Set W_Shell = CreateObject("WScript.Shell")
    Do
    ' Auswertung
    MsgBox "Nachricht"
    Loop While (1 <> W_Shell.Popup("Programm abgebrechen?", 5, "Abrechnungslauf", 0))
    MsgBox "Programmende"
    End Sub

    Diese Makro (in Excel) funktioniert jetzt noch unter XP immer, unter Win7/32 auch fast immer und unter Win7/64 mal ja mal nein
    manchmal einmal manchmal vormittags mal weiten sich die 5s zu Stunden.....

    Ich versteh es nicht...
    Wo liegt mein Denkfehler?

    Bitte um Hilfe!

    guenter1234 schrieb:

    Mit reinen VBA Befehlen soll so etwas nicht gehen
    Mit reinen VBA-Befehlen geht sehr wenig.
    VBA hat ja aber immerhin das Objektmodell der Anwendung im Schlepptau. Und das von Windows.
    Schau dir mal die Methode Application.OnTime an.
    Wahrscheinlich ist damit dein Problem schon gelöst.

    Ansonsten kannst du natürlich über einen WinApi-Timer alle möglichen Spiele dieser Art machen.
    Du kannst zum Beispiel eine Messagebox erzeugen und in einem Timer deren Window-Handle suchen und abschiessen.
    Ein Beispiel gibt's hier.

    Zu deiner Frage:

    guenter1234 schrieb:

    Wo liegt mein Denkfehler?
    Multiprocessing?

    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Ich kann dich beruhigen:
    Bei meinem Win7/64 mit Office 2010/32bit geht das Popup bei VBA-Aufruf auch nicht weg.
    Unter VBS funktioniert's wie erwartet.
    Scheint also ein Office-Problem zu sein.

    Du kannst ja einen Call bei Microsoft aufmachen. :D
    Ansonsten habe ich ja schon Ausweichlösungen aufgezählt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Office, zumindest Excel und Word, 2010 haben noch mehrere Bugs. Hin und wieder stolpere ich über einen.

    Die letzten Drei: Word hatte ein Formatierungsproblem beim Inhaltsverzeichnis. Einige Einträge wurden einfach immer wieder fett dargestellt. Erst ein unsinniger "Flankenwechsel über Umwege" brachte Abhilfe. Die Idee dazu hatte eine Kollegin. (Wohl Erfahrungswert?)

    Excel hatte bei einer Besprechung für Schocker gesorgt. Zig Einträge wurden bei der bedingten Formatierung als doppelt angezeigt. Dabei kann Excel 2010 einfach keine 16-stelligen Zahlen, wo sich die letzte Ziffer unterscheidet, auseinanderhalten.

    Excel VBA: Wird eine Arbeitsmappe auf einem Netzlaufwerk geschlossen und Excel sofort beendet, dann wird diese für einige Sekunden als "Bereits in Arbeit" angemeckert, wenn man es gleich wieder öffnet. Lösung: Mappe schließen, und Excel per Application.onTime eine Sekunde später beenden. Das gleiche habe ich hin und wieder auch bei Word. Da werden die Dokumente aber "normal" durch Word beenden geschlossen. Und gelegentlich kommt dann auch die Meldung mit bereits geöffnet, wenn ich es sofort wieder öffnen will.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Danke für Eure Antworten. Jetzt habe ich verstanden, dass ich nicht vollkommen blöd bin, sondern der Fehler im VBA liegt. Das ist aber eine schwache Leistung von MS, wenn die simpelsten Funktionen nicht funktionieren wie gewohnt! So was muss doch wohl schnellstens behoben werden.
    Wie kann man denn da, einen Call bei MS öffnen?