• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

function foutmelding in excel voor 64 bits systeem

  • Onderwerp starter Onderwerp starter HWV
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

HWV

Terugkerende gebruiker
Lid geworden
19 feb 2009
Berichten
1.213
Beste,

Nu wij op nieuwe pc`s werken 64 bits krijg ik foutmeldingen op de excel VBA code:

Compileerfout:

De code in dit project moet worden bijgewerkt voor gebruik op 64-bits systemen.
Controleer de instructies, werk ze bij en markeer ze met het kenmerk PtrSafe.

Dit is de code die ik gebruikt:

Code:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Weet iemand hoe ik dat kan ondervangen!



Groet HWV
 
Voor een 64-bit Windows zal dat niet nodig zijn dus ik neem aan dat het gaat om een 64-bit Office?
 
Opgelost met: Private Declare PtrSafe

Beste,

Bedankt voor de reactie.
Na lang gezocht te hebben op de forums heb ik denk ik de oplossing gevonden:

Code:
[COLOR="#FF0000"]Private Declare PtrSafe[/COLOR] Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
[COLOR="#FF0000"]Private Declare PtrSafe[/COLOR] Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
[COLOR="#FF0000"]Private Declare PtrSafe[/COLOR] Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
[COLOR="#FF0000"]Private Declare PtrSafe[/COLOR] Function ReleaseCapture Lib "user32" () As Long
[COLOR="#FF0000"]Private Declare PtrSafe[/COLOR] Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Zo op het eerste gezicht en de eerste testen doet hij het goed.

groet HWV
 
Dat klopt inderdaad maar je zult waarschijnlijk ook de Window Hook als Long Pointer moeten aangeven.
ByVal hwnd As LongPtr

Daarnaast is het wellicht handig om de code onafhankelijk te maken van 32- of 64bit door te werken met een compiler directive. Bijvoorbeeld:

#If Off64 Then
#Else
#End IF
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan