none
Excel Userforms frier ein RRS feed

  • Frage

  • Hallo,

    nach der Umstellungen auf Windows 10 mit Office 2013 bzw. 2016 haben wir das Phänomen, dass UserForms in Excel bei Aufruf mit "frm.Show" einfrieren.

    Die Rechner hängen im Firmennetz und wurden alle neu aufgesetzt. Es läuft nur noch ein Sophos-Virenscanner.

    Die Formulare werden per Sub-Prozedur in eine Variable geladen, Steuerelemente angepasst un anschließend mit Shoe angezeigt. Beispiel:

    sub Test
      dim frm as frmTest
    
      set frm = new frmTest
    
      With frm
        .txtTest.value = 123
       ...
      end with
    
      frm.Show
    end Sub
    

    Die Datei läuft in Windows 7 mit Excel 2010 seit Jahren problemlos. Auch auf einem privaten Rechner den ich mit Win10 und Office 2013 neu aufgesetzt hab, läuft es ohne Probleme.

    Wenn man mit STRG+Pause das Skript anhält, dann sieht man, dass er bei frm.Show hängt.

    Manchmal geht es plötzlich nach rund 10 Minuten weiter, manchmal schießen wir Excel ab, starten Datei neu und plötzlich geht es an der gleichen Stelle wieder weiter.

    Von Office reparieren, Datei reparieren, etc. haben wir alles schon durch. Auf einem privaten Rechner läuft es tadellos, nur auf den Firmenrechnern nicht.

    Die Formulare beinhalten kaum Logik, teilweise nur ein Eingabefeld mit 2 Schaltflächen.

    Welche Ursachen könnte es haben, dass die Formulare sporadisch beim Anzeigen einfrieren?.

    Für jeden Hinweis dankbar.

    MfG

    Mario Batz

    Donnerstag, 10. Oktober 2019 10:59

Alle Antworten

  • Am 10.10.2019 schrieb Mario Batz:

    Die Rechner hängen im Firmennetz und wurden alle neu aufgesetzt. Es läuft nur noch ein Sophos-Virenscanner.

    Lass den doch mal probehalber komplett und rückstandsfrei
    deinstallieren. Zweimal sauber neu starten und testen. Falls es dann
    funktioniert, kann man in den Tiefen von Sophos nach möglichen
    Ursachen schauen.

    Servus
    Winfried


    WSUS Package Publisher:
    https://github.com/DCourtel/Wsus_Package_Publisher
    HowTos zum WSUS Package Publisher
    https://www.wsus.de/wsus-package-publisher/
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren:
    https://github.com/JochenKalmbach/communitybridge
    GP-PACK - PRIVACY AND TELEMETRIE: http://www.gp-pack.com/

    Donnerstag, 10. Oktober 2019 11:34
  • neue Erkenntnis...

    das Problem tritt am meisten auf, wenn in Excel die Datei offen ist und der Rechner länger steht (~ >=10 Minuten) ohne jegliche Benutzereingabe. Ggf. schaltet sich noch der Bildschirmschoner ein. Mehr nicht.
    Man könnte meinen, das System hätte plötzlich ein Problem mit der Forms-DLL.

    Wenn ich an dem Rechner das Formular per Skript mehrmalig auf/zu mache, dann läuft aber alles ganz normal.

    Gibt es eine Möglichkeit die internen Aktionen beim Öffnen eines Formulars mit frm.show irgdnwie zu tracen? Mit VisualStudio zum Beispiel?

    MfG

    Mario

    Freitag, 11. Oktober 2019 07:01
  • Nein leider nicht.
    Die Forms liegen in einer forms20.dll, die von Office installiert wird.
    Und Maschinencode lässt sich ohne Quellen so gut wie gar nicht debuggen.

    Was du ggf. prüfen kannst ist via Processexplorer (Sysinternals) beim "Hängenbleiben" die schlafenden Stacks zu prüfen wo die denn hängen bzw. warten.

    Selten liegt es an den Forms selber.
    Prüfe mal, welche Steuer-ELemente du auf der Form (ggf. auch unsichtbare) hast. Vielleicht initiierst du eine Kommunikation, die nun unendlich auf Timeout wartet?

    Nach der Rückkehr aus dem Show hilft es auch schon mal per "unload frm" die Form aus dem Speicher zu entladen. Immerhin gibt es eine Forms-Auflistung in der jede geöffnete Form zusätzlich gespeichert ist. Startest du eine Form 100 mal neu, hast du diese auch 100 mal im Speicher.

    Das Beenden von "Test" gibt nur die Variable frei, entlädt aber nicht die Form.

    Besser ist es da, Forms in globalen Variablen zu halten so dass man sie nur 1x braucht.
    Freitag, 11. Oktober 2019 08:12
  • Folgendes haben wir nun auf 4 verschiedenen Rechnern durchgeführt :

    • Altuelles Windows-Build installiert
    • Virenscanner abgeschaltet
    • Office 2016 durch Office 2013 ersetzt und umgekehrt
    • dem Anwender lokale Admin-Rechte gegeben
    • Bildschirmschoner abgeschaltet

    Wenn die Excel-Datei geöffnet und damit gearbeitet wird, läuft alles ganz normal. Sobald der Rechner länger steht, ohne das der Anwender etwas in Excel macht, friert beim Öffnen des nächsten Formulars (wir haben ca. 20 Formulare in der Excel-Datei) Excel komplett ein.

    Im Tastmanager wird eine CPU-Last von >=40% angezeigt. Wenn man aber z.B. 10 Minuten wartet, dann geht es plötzlich wieder.

    Was wir aber auf jeden Fall herausfinden konnten ... wenn ein Formular hängt und sich ein Mitarebeiter von der IT per Remotezugriff aufschaltet, dann ändert sich die Darstellung der Schrift im Formular etwas (die Schrift wird dünner als ob der Alias-Effekt abgeschlatet wird) und plötzlich geht das Formular wieder.

    Man könnte meinen, dass irgend etwas an den Berechtigungen oder an der Grafikdarstellung faul ist.

    Eine andere ähnliche Datei die genauso Programmiert wurde, funktioniert tadellos. Das Problem besteht auch nur unter Windows 10 im Unternehmensnetz.

    Bei mir habe ich die Datei mit Windows 7 und Win 10, Office 2010-2016 problemlos getestet.

    Die Formulare selbst haben kaum Logik. Es werden nur Steuerlemente für die Eingabe angezeigt, nach dem Betätigen der Schaltfläche wird das Formular ausgeblendet und die Datenverarbeitung findet im Modul wieder statt. Soweit kommen wir aber nicht, denn das Formular friert bereits beim Anzeigen ein.

    Wenn wir Excel abschießen und die Datei neu starten, funktioniert wieder alles ganz normal.

    Im Modul werden die Formulare referenziert, mit Show angezeigt und am Ende der Prozedur mit "unload" geschlossen und die Variable mit "Set = Nothing" geleert.

    Das Dumme ist, das Problem tritt nur mit Windows 10 im Unternehmensnetz bei dieser einen Datei auf.

    MfG
    Mario

    Mittwoch, 23. Oktober 2019 07:06
  • Am 23.10.2019 schrieb Mario Batz:

    Das Dumme ist, das Problem tritt nur mit Windows 10 im Unternehmensnetz bei dieser einen Datei auf.

    Habt ihr den Inhalt der Datei schon mal in eine neue leere Datei
    kopiert und damit probiert?

    BTW: Virenscanner kann man nicht abschalten, nur rückstandsfrei
    deinstallieren.

    Servus
    Winfried


    WSUS Package Publisher:
    https://github.com/DCourtel/Wsus_Package_Publisher
    HowTos zum WSUS Package Publisher
    https://www.wsus.de/wsus-package-publisher/
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren:
    https://github.com/JochenKalmbach/communitybridge
    GP-PACK - PRIVACY AND TELEMETRIE: http://www.gp-pack.com/

    Mittwoch, 23. Oktober 2019 15:20
  • Zumindest mein GData lässt sich auch kurzfristig deaktivieren.
    Der "OnAccess-Scan" wird dann nicht mehr durchgeführt.
    Klar ist er nach der vorgegebenen Zeit wieder da.

    Der Defender lässt sich wohl nur komplett ein- oder ausschalten aber nicht temporär.

    Ansonsten:
    Wird die Excel-Datei u.U. von einem Netzlaufwerk geladen?
    Ist die Datei ggf. auch auf anderen Clients geöffnet?
    Passiert dies auch, wenn die Datei lokal geöffnet wird?
    Es gibt da einen Thread, der auf lange Opens beim Shared-Zugriff hinweist.

    Mittwoch, 23. Oktober 2019 15:38