Compatibilité Office 2016/2021

Mistral_13200 Messages postés 635 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 15 nov. 2024 à 11:13
luckydu43 Messages postés 3860 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 15 novembre 2024 - 15 nov. 2024 à 11:30

Bonjour à tous,

Dernièrement j’ai acheté Office Pro 2021 en 64 bits.Hier j’ai réouvert une base Access créé, l’année dernière avec Office 2016. Dès l’ouverture je suis en défaut sur les lignes de code suivante :


'Déclaration de l'API
Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                   "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Je suppose qu’il s’agit d’un problème de compatibilité 32/64 bits entre les deux versions.

Comment faire pour régler le problème.

Merci d’avance pour votre aide.

Mistral


Windows / Edge 130.0.0.0

A voir également:

2 réponses

Panth33ra Messages postés 21017 Date d'inscription mercredi 8 juillet 2020 Statut Membre Dernière intervention 15 novembre 2024 Ambassadeur 1 864
15 nov. 2024 à 11:27
0
luckydu43 Messages postés 3860 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 15 novembre 2024 960
Modifié le 15 nov. 2024 à 11:34

Bonjour,

Vous avez bien identifié la cause, il manque le mot-clé PtrSafe une fois en VBA7.

Private Declare PtrSafe Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As LongPtr

Notez que j'ai utilisé un LongPtr.

Si ça pète plus loin dans votre code, la compatibilité doit aussi être adaptée sur les handle (marqueurs) et descripteurs en remplaçant le type par LongPtr, un exemple :

Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As LongPtr
    hInstance As LongPtr
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    Flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As LongPtr
    lpfnHook As LongPtr
    lpTemplateName As String
End Type

Tenez au jus !


0