Anzeige
Archiv - Navigation
1296to1300
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
32-64 Bit Problem
02.02.2013 12:17:00
Albert
Hallo VBA Experten,
ich bringe das folgende Makro unter der 64 Bit Version von Office 10 nicht zum Laufen. (In der 32 Bit Version funktionierte es problemlos)
Option Explicit
#If Win64 Then
Private Declare PtrSafe Function SetTimer Lib "user32" _
(ByVal hwnd As Long, ByVal nIDEvent As Long, _
ByVal uElapse As Long, ByVal lpTimerFunc _
As Long) As Long
Private Declare PtrSafe Function KillTimer Lib "user32" _
(ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private Declare PtrSafe Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function GetWindow Lib "user32" _
(ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare PtrSafe Function GetClassName Lib "user32" _
Alias "GetClassNameA" (ByVal hwnd As Long, ByVal _
lpClassName As String, ByVal nMaxCount As Long) _
As Long
Private Declare PtrSafe Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd As Long, _
ByVal lpString As String, ByVal cch As Long) _
As Long
Private Declare PtrSafe Function SendMessageBynum& Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal _
wMsg As Long, ByVal wParam As Long, ByVal lParam _
As Long)
#Else
Private Declare Function SetTimer Lib "user32" _
(ByVal hwnd As Long, ByVal nIDEvent As Long, _
ByVal uElapse As Long, ByVal lpTimerFunc _
As Long) As Long
Private Declare Function KillTimer Lib "user32" _
(ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" _
(ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetClassName Lib "user32" _
Alias "GetClassNameA" (ByVal hwnd As Long, ByVal _
lpClassName As String, ByVal nMaxCount As Long) _
As Long
Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd As Long, _
ByVal lpString As String, ByVal cch As Long) _
As Long
Private Declare Function SendMessageBynum& Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal _
wMsg As Long, ByVal wParam As Long, ByVal lParam _
As Long)
#End If
#If VBA7 Then
Private iPasswortchar As LongPtr
Private hlngTimerKennung As LongPtr
Private iTitel As String
Private Const EM_SETPASSWORDCHAR = &HCC
Private Const GW_CHILD = 5
Private Const GW_HWNDFIRST = 0
Private Const GW_HWNDNEXT = 2
#Else
Private iPasswortchar As Long
Private hlngTimerKennung As Long
Private iTitel As String
Private Const EM_SETPASSWORDCHAR = &HCC
Private Const GW_CHILD = 5
Private Const GW_HWNDFIRST = 0
Private Const GW_HWNDNEXT = 2
#End If
Private Sub TimerSetzen()
hlngTimerKennung = SetTimer(0, 0, 200, AddressOf ApiTimer)
If hlngTimerKennung = 0 Then MsgBox _
"Fehler beim Initialisieren des Timers"
End Sub
Die Fehlermeldung kommt bei "AddressOf ApiTimer" und lautet folgendermassen:
Fehler beim Kompilieren
Typen unverträglich
Ich bitte um Unterstützung und bedanke mich im Vorhinein
Albert

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 32-64 Bit Problem
02.02.2013 12:24:49
mumpel
Hallo!
"PtrSafe" alleine genügt nicht. Ein paar "Long" in der Klammer müssen durch "LongPtr" ersetzt werden. Und ein paar "Long" nach der Klammer durch "LongLong". Damit musst Du Dich noch näher beschäftigen.
Gruß, René

AW: 32-64 Bit Problem
02.02.2013 13:28:24
Albert
Hallo René,
danke für Deinen Tipp, ich habe versucht Ihn umzusetzen und auch versucht zu recherchieren. Nur leider sind meine VBA-Kenntnisse zu gering um den Dingen wirklich auf den Grund gehen zu können.
Ergebnis der Veränderung ist folgende: Das Makro läuft bis zur Einblendung des Passwortfensters - nur ist jetzt keine Eingabe mehr möglich - Excel ist eingefroren und kann nur mehr mit dem Taskmanager beendet werden.
Gruß, Albert

Anzeige
AW: 32-64 Bit Problem
02.02.2013 17:46:50
Albert
Hallo Jochen,
vielen Dank für die Info, ich habe gerade auf der Seite geblättert. Es wird eine Zeitlang daueren bis ich all die Informationen verarbeiten und hoffentlich auch umsetzen kann.
Schönen Abend,
Albert

61 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige