Compatibilité Office 2016/2021
cousinhub29 Messages postés 1074 Date d'inscription Statut Membre Dernière intervention -
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
- Compatibilité Office 2016/2021
- Microsoft office - Guide
- Cette technique secrète permet d'avoir Windows et Microsoft Office gratuitement et à vie - Accueil - Bureautique
- Open office gratuit - Télécharger - Suite bureautique
- Compatibilite windows 11 - Guide
- Web office - Guide
4 réponses
Bonjour,
Voir sur ce forum... https://www.developpez.net/forums/d2048281/logiciels/microsoft-office/access/vba-access/erreur-getopenfilename/
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 !
Bonjour,
Pourquoi utiliser du VBA, alors que Power Query peut très bien le faire, tout seul.
Et en plus, on peut transformer, modifier, travailler avant l'import dans Excel...
Surtout avec 2021.
Bonne journée
Bonjour,
Question de courbe d'apprentissage, tout réapprendre demande du temps.
Tant que le VBA reste bien exploité par la suite Office, d'autant que ce langage évolue, je ne vois moi-même pas de raison de réapprendre pour tout réécrire certainement moins bien dans l'immédiat
Et si c'est effectivement un sujet, pour garantir une bonne transition il convient de garder exécutables les précédents scripts !
Bonjour,
A plus de 60 ans, je n'ai pas hésité, et j'ai tout appris, le code M n'ayant rien à voir avec le VBA (que j'utilisais depuis près de 30 ans).
Je trouve (mais cela n'est qu'un avis personnel) que PQ offre plus de souplesse et surtout de robustesse, notamment pour ce type de besoin.
Mais surtout, l'utilisateur est vraiment libre de ses choix. S'il désire opter pour cette option, il trouvera toute l'aide qu'il souhaite.
Bonne soirée