Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
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

Laufzeitfehler 453

Laufzeitfehler 453
22.11.2021 11:47:45
Pascal
Guten Tag zusammen
ich hatte letzte Woche - dank der grossartigen Unterstüzung hier im Forum ein
kleines Tool zusammengebastelt, mittels dem täglich im Outlook (office 365) die gesetzlichen
Pflicht-Pausen eingetragen werden können.
https://www.herber.de/bbs/user/149294.zip
Nun haben wir aber festgestellt, dass dieses praktische Tool auf neueren Clients nicht funktioniert.
dort erscheint bei Starten folgender Laufzeitfehler:
Laufzeitfehler 453
DLL-Einsprungpunkt GetCursorPos in user32.dll nicht gefunden
Natürlich habe ich auch schon nach dieser Fehlermeldung recherchiert im Web. Da wird teilweise
auf eine nötige Änderung in der Registry hingewiesen.
Ich kann aber keine Änderungen an den Registriys der Benutzer durchführen.
Woran liegt dieser Fehler und wie kann dieser behoben / umgangen werden?
vielen lieben Dank für Eure Unterstützung
Grüsse: Pascal

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 453
22.11.2021 13:53:02
volti
Hallo Pascal,
mein 64-Bit Rechner ist grad in Behandlung.
Aber probiere trotzdem mal meine (ungetesteten) Änderungen aus. Sie sollten jetzt unter 32- und 64-Bit funktionieren.
tool.xlsm
viele Grüße
Karl-Heinz
Anzeige
AW: Laufzeitfehler 453
23.11.2021 07:56:17
Pascal
Guten Morgen allerseits
herzlichen Dank für Eure Antworten!
Leider funktioniert bisher keine Eurer Antworten.
Ich erhalte nach wie vor den selben Laufzeitfehler :-(
hat jemand noch einen anderen Tipp auf Lager?
Viele Grüsse: Pascal
AW: Laufzeitfehler 453
23.11.2021 08:52:55
volti
Schade Pascal,
dass es wohl nicht an der 64-Bit Problematik liegt.
Die User32.dll ist eine der Haupt-DLL. Sie kann nicht fehlen oder defekt sein, schon gar nicht bei mehreren PCs gleichzeitig. Sonst würden ja auch andere Programme m.E. nicht laufen.
An der Registry würde ich bzgl. dieses Falles nichts ändern.
Vielleicht hat ja noch jemand eine Idee.
Gruß
KH
Anzeige
AW: Laufzeitfehler 453
23.11.2021 17:26:15
ChrisL
Hi Pascal
Schuss ins Blaue...
Vielleicht eine Apple-Umgebung oder sonst etwas ungewöhnliches (z.B. Remote Login, Citrix etc.)?
cu
Chris
AW: Laufzeitfehler 453
23.11.2021 18:06:12
volti
Hi Chris,
bei Citrix (auf meiner früheren Arbeitsstelle) gab es diese Probleme nicht.
Gruß
KH
AW: Laufzeitfehler 453
24.11.2021 09:31:03
ChrisL
Hi
Evtl. etwas weit hergeholt, aber vielleicht hat der ausführende PC und der Remote Desktop nicht die gleiche Bit-Version.
Ich dachte nur, die Ursache ist vielleicht eher in der "Umgebung" zu suchen.
cu
Chris
AW: Laufzeitfehler 453
24.11.2021 11:30:01
volti
Jou,
möglich ist ja vieles, das ist wohl wahr.
Bei uns war es allerdings so, dass mein Arbeitsplatz-Office eine 32 Bit-Version war und das Online-Office via Citrix eine 64 Bit-Version war.
Der Betrieb war unabhängig möglich.
Da ich allerdings meine Anwendungen sowohl am Arbeitsplatz und unter Citrix betreiben wollte, musste bei den API-Codes via Compilerschalter umgesteuert werden.
BTW: Das ist auch hier schon so berücksichtigt.
Gruß
KH
Anzeige
AW: Laufzeitfehler 453
24.11.2021 12:41:53
Pascal
hallo zusammen
Danke schon mal herzlich für all Eure Inputs und Hinweise.
Leider bin ich aber immer noch nicht weiter. Resp. auf den neuen Clients im Geschäft krieg ich das Ding nicht mehr zum Laufen.
Ich vermute schwer dass es (wie viele von Euch schon drauf hingewiesen haben) mit der Architektur der neuen Notebooks zu tun hat.
32bit / 64bit?
kann ich das irgendwie umprogrammieren (bin da jetzt grad nicht so gewandt damit) dass das Tool letzendlich dann wieder auf allen Clients lauffähig ist?
Komisch finde ich allerdings ...
wenn ich via Systemsteuerung die Architektur meines aktuellen Notebook prüfe (also hier wurde auch dieses Tool erstellt) so ist das 64bit.
auch die neuen Clients haben meines Wissens 64bit
Grüsse und hoffentlich kann jemand bald einen zur Lösung führenden Input liefern ;-)
Pascal
Anzeige
AW: Laufzeitfehler 453
24.11.2021 13:27:56
ChrisL
Hi Pascal
Folgender Auszug sollte die Bit-Version abfangen (wenn nicht 64 dann nimm 32 Version).

#If Win64 Then
Private Declare PtrSafe Function GetCursorPos Lib ...
#Else
Private Declare Function GetCursorPos Lib ...
#End If
Wenn das Problem trotz korrekter Implementierung des Codes weiter besteht, dann wäre das Problem anderswo (vielleicht in der Systemumgebung) zu suchen. Citrix war nur eine Idee; gemäss den Rückmeldungen von KH wird es wohl eher nicht daran liegen.
Neue Laptops sollten grundsätzlich noch kein Problem darstellen. Die Umgebung müsste schon irgendwie ungewöhnlich sein (z.B. kein Windows).
Da rundherum aber scheinbar alles i.O. ist, müsste man vielleicht doch noch einmal den Code überprüfen. Ein kleiner Test betr. korrekter Erkennung der Version könnte man beispielsweis hiermit machen:

#If Win64 Then
Public Const x As Integer = 64
#Else
Public Const x As Integer = 32
#End If
Sub t()
MsgBox x
End Sub
cu
Chris
Anzeige
AW: Laufzeitfehler 453
24.11.2021 13:51:22
Pascal
Danke herzlich für den Lösungsansatz mt den Codes
sorry der Frage... aber wo genau müsste dieser code nun hin?
AW: Laufzeitfehler 453
24.11.2021 15:14:51
ChrisL
Hi Pascal
Der Test-Code müsste in ein Standardmodul kopiert werden.
Damit testest du aber nur mal ob die Erkennung der Version funktioniert. Danach müsste man dann Schritt für Schritt weiter Debuggen und die Code-Zeilen immer mal wieder einzeln in den verschiedenen Versionen testen.
Ich will dir nicht zu nahe treten, jeder fängt irgendwo mal an. Nur hast du dir mit den API-Funktionen die Königsdisziplin ausgesucht, was OK ist solange du nur Copy/Paste machen musst. Aber spätestens bei Problemen/Fehlern wird es halt schwierig, wenn das Grundverständnis für den Code fehlt. Bei einem solchen Debug Prozess (manchmal stundenlange Detektivarbeit) kann dir das Forum schlecht helfen, insbesondere weil API-Funktionen auf die Systemumgebung zugreifen, welche wir nicht zur Verfügung haben.
Ich gebe an dieser Stelle auf, aber du darfst die Frage natürlich weiterhin als offen kennzeichnen.
cu
Chris
Anzeige
AW: Laufzeitfehler 453
24.11.2021 15:41:59
Pascal
hab jetzt den Code von Dir in ein separates Modul gelegt.
die Message - Box gibt mir 32 aus.
somit heisst das also, dass mein derzeitiger Rechner 32bit Architektur hat.
dann dürften die neuen Notebooks also in 64bit sein.
kann mir jemand sagen, was ich nun genau anpassen müsste um den Code auch auf 64bit - Maschinen lauffähig zu kriegen?
... gibt es allenfalls irgendwo Code-Bausteine oder eine Funktion welche ich in alle meine - auf 32bit basierenden Tools kopieren könnte, um diese dann auf den neuen Maschinen unter 64bit auch zum Laufen zu bringen?
AW: Laufzeitfehler 453
24.11.2021 16:51:39
volti
Hallo Pascal,
die von Chris gezeigten Declare ohne PtrSafe müssen bei alten Office-Versionen mit VBA6 angewendet werden, also z.B. unter Win7 usw.
Bei den neueren Officeversionen können sie verwendet werden.
Besser ist es hier allerdings. gleich die PtrSafe-Versionen zu verwenden, da diese bei 32 und 64 Bit funktionieren.
Bzgl. der Funktion GetCursorPos gibt es bei den neueren Officeversionen, z.B. 365, keinen Unterschied zwischen 32 und 64 Bit.
Ich hatte Dir schon Dein Tool auf 32/64-Bit bereitgestellt, kann lediglich 64 Bit gerade nicht testen. Hast Du das auch mal ausprobiert?
Hier noch mal....
tool.xlsm
Falls das nicht laufen sollte, hier mal etwas zum testen. Pack das einfach in eine neue Datei in ein Modul und lasse die beiden Tests unter den verschiedenen Versionen mal laufen.
Ich fürchte, es liegt an ganz anderen Dingen.
#If VBA7 Or Win64 Then
  ' 32 Bit VBA7 oder 64 Bit
  Declare PtrSafe Function GetCursorPos Lib "user32" ( _
          lpPoint As POINTAPI) As Long
        #Else
  ' 32 Bit VBA7 oder 32 Bit VBA6
  Declare Function GetCursorPos Lib "user32" ( _
           lpPoint As POINTAPI) As Long
         #End If

Declare PtrSafe Function GetCursorPos2 Lib "user32" Alias "GetCursorPos" ( _
        lpPoint As Currency) As Long

Type POINTAPI
     x As Long
     y As Long
End Type


Sub Test1()
  Dim Pt As POINTAPI

  GetCursorPos Pt
  Debug.Print Pt.x, Pt.y

End Sub

Sub Test2()
  Dim Pt As Currency

  GetCursorPos2 Pt
  Debug.Print Pt

End Sub
Gruß
Karl-Heinz
Gruß
Karl-Heinz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige