BLOG

 
VBA

Problèmes de compatibilité des macros VBA v6.3 avec SolidWorks 2013

Image_043

Avec SolidWorks 2013, un problème de compatibilité de macro est apparu. Seules les macros .swb (VBA) sont concernées. Ce problème est dû au fait que SolidWorks 2013 utilise VBA v7.1 contrairement aux précédentes versions qui utilisaient VBA v6.3 (moteur Visual Basic 6.0 de la belle époque)

On a longtemps cru que VBA allait disparaître pour faire place au moteur .net VSTA (Extensions .vbproj pour VB et .csproj pour C#), mais, du fait d’une très forte implantation dans les entreprises, Microsoft a fait le choix de maintenir VBA sur la nouvelle génération Office 15 (Commercialement Office 365). On peut donc s’attendre à continuer avec VBA  pour encore quelques versions de SolidWorks.

Il est simple de comprendre pourquoi Microsoft est passé à la version VBA7.x. Il suffit d’imaginer tous les problèmes potentiels de compatibilité de VBA6.x, qui date des années 90, avec les environnements actuels du type Windows 8, 32/64 bits!!.

Par exemple, certaines instructions du code ont changé, car le compilateur doit maintenant référencer l’espace d’adressage 64-bit. Voici un cas concret de modification du code : Si, lors du lancement de la macro, vous obtenez le message suivant

message

Éditez alors votre macro. Vous devez avoir des lignes en rouge  du type:
          Public Declare Function SHBrowseForFolder Lib « shell32″ (lpbi As BrowseInfo) As Long
Avec SolidWorks 2013, et donc VBA V7.1,  la syntaxe de définition a changé :
          Declare PtrSafe Function SHBrowseForFolder Lib « shell32″ (lpbi As BrowseInfo) As Long

Si vous souhaitez avoir plus d’informations, vous pouvez consulter ces 2 chapitres dans l’aide en ligne VBA

  • Vue d’ensemble de Visual Basic pour Applications 64 bits
  • Constantes de compilateur

Help1

Help2

Vous trouverez aussi d’autres informations sur le site de Microsoft en suivant ce lien

Par contre, les contrôles graphiques, eux, sont toujours liés à la fm20.dll de l’ancien environnement WinForms. Donc aucun changement pour le moment. Il n’est pas absurde de penser que VBA s’éteindra avec la fin de la compatibilité du monde WinForms qui sera remplacé à priori par WPF (Spécification graphique de Windows depuis Vista).

Pour conclure, afin de s’affranchir de ces problèmes et des nouveaux qui risquent d’arriver, il est fortement recommandé pour les utilisateurs de VBA, de passer à VSTA (Visual Studio Tools for Applications), que ce soit pour débuter un nouveau développement ou maintenir des développements existants!

TAGS > , , , ,

Laisser un commentaire.

%d blogueurs aiment cette page :