Discussion:
Fehler unter 64 bit Windows
(zu alt für eine Antwort)
Peter Ostermann
2012-12-28 18:17:30 UTC
Permalink
Hallo,

folgende Decalres lassen VBA abstürzen:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long)
As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long

Unter einem 32 bit Windows laufen die Makros fehlerfrei, ebenso nach
auskommentieren.

Eigentlich weiß ich gar nicht ob die Mappe an Funktionalität einbüßt
ohne diese Funktionen. Auch kann ich mich nicht erinnern wann und zu
welchem Zweck dieser Code eingefügt wurde.

Ich bin versucht diese Funktionen zu löschen, es sei denn sie lassen
sich abändern damit unter beiden Windows lauffähig.

Wer weiß Rat? Welcher Verweis unter einem 32 bit (das verfügbare
Entwicklungs)-Windows würde z.B. dem Nutzer der Mappe im 64 bit Windows
die fehlende Bibliothek eingebunden mitliefern?

Schöne Grüsse an die Experten und danke im Voraus
Peter
Claus Busch
2012-12-28 18:44:49 UTC
Permalink
Hallo Peter,
Post by Peter Ostermann
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long)
As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
für die 64-bit Version musst du nach Declare PtrSafe einfügen, also
z.B.:
Private Declare PtrSafe Function FindWindow Lib "user32" Alias
"FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Um es passend zu machen für alle Varianten, schau mal hier rein:
http://support.microsoft.com/kb/983043


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Peter Ostermann
2012-12-29 17:29:16 UTC
Permalink
Post by Claus Busch
Hallo Peter,
Post by Peter Ostermann
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long)
As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Ich rätsele immer noch wofür diese function declares überhaupt gebraucht
werdem.

Gruß
Peter
Claus Busch
2012-12-29 17:36:29 UTC
Permalink
Hallo Peter,
Post by Peter Ostermann
Ich rätsele immer noch wofür diese function declares überhaupt gebraucht
werdem.
es geht bei dir um Zugriff auf die Zwischenablage. Warum du das hast,
kann ich dir aber auch nicht sagen.
Schau mal in der VBA-Hilfe nach "Declare" bzw. "Declare-Anweisung"


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Loading...