Partager via


Instruction declare

Utilisée au niveau du module pour déclarer des références à des procédures externes d'une bibliothèque de liens dynamiques (DLL).

Remarque

Les instructionsDeclare avec le mot-clé PtrSafe sont la syntaxe recommandée. Les instructions Declare qui comprennent PtrSafe fonctionnent correctement dans l'environnement de développement VBA7 version 7 sur les plateformes 64 et 32 bits après la mise à jour de tous les types de données de l'instruction Declare (paramètres et valeurs renvoyées) qui doivent stocker des quantités 64 bits pour utiliser LongLong pour des intégrales 64 bits ou LongPtr pour des pointeurs et poignées. Pour assurer la compatibilité descendante avec VBA version 6 et versions antérieures, utilisez la construction suivante :

#If VBA7 Then 
Declare PtrSafe Sub... 
#Else 
Declare Sub... 
#EndIf

Syntaxe 1

[ Public | Privé ] DeclareSubnameLib « libname » [ Alias « aliasname » ] [ ( [ arglist ] ) ] ]

Syntaxe 2

[ Public | Privé ] DeclareFunctionnameLib « libname » [ Alias « aliasname » ] [ ( [ arglist ] ) ] [ Astype ]

Syntaxe de l'instruction Declare VBA7

Remarque

Pour que le code fonctionne avec des versions 64 bits de Microsoft Office, toutes les instructions Declare doivent inclure le mot clé PtrSafe et tous les types de données de l'instruction Declare (paramètres et valeurs renvoyées) qui doivent stocker des quantités 64 bits doivent être mis à jour pour utiliser LongLongpour des intégrales 64 bits ou LongPtr pour des pointeurs et des poignées.

Syntaxe 1 (Sub)

[ Public | Privé ] DeclarePtrSafeSubnameLib « libname » [ Alias « aliasname » ] [ ( [ arglist ] ) ] ]

Syntaxe 2 (Function)

[ Public | Privé ] DeclarePtrSafeFunctionnameLib « libname » [ Alias « aliasname » ] [ ( [ arglist ] ) ] [ Astype ]

Élément Description
Public Facultatif. Permet de déclarer des procédures disponibles pour toutes les autres procédures de tous les modules.
Private Facultatif. Permet de déclarer des procédures disponibles uniquement dans le module dans lequel la déclaration est effectuée.
PtrSafe Obligatoire sur 64 bits. Le mot clé PtrSafe confirme qu'il est possible d'exécuter une instruction Declare sur des versions 64 bits de Microsoft Office.
Sub Facultatif (soit Sub ou fonction doit apparaître). Indique que la procédure ne renvoie pas de valeur.
Fonction Facultatif (soit Sub or Fonction doit apparaître). Indique que la procédure renvoie une valeur qui peut être utilisée dans une expression.
name Obligatoire. Tout nom de procédure valide. Notez que les points d’entrée DLL respectent la casse.
Lib Obligatoire. Indique qu'une DLL ou une ressource de code contient la procédure déclarée. La clause Lib est requise pour toutes les déclarations.
libname Obligatoire. Nom de la DLL ou de la ressource de code qui contient la procédure déclarée.
Alias Facultatif. Indique que la procédure appelée porte un autre nom dans la DLL. Cela est utile lorsque le nom de la procédure externe est identique à un mot clé. Vous pouvez également utiliser Alias quand une procédure DLL porte le même nom qu’une variable, constante, ou toute autre procédure publique dans la même étendue. Alias est également utile si des caractères du nom de la procédure DLL ne sont pas autorisés par la convention d'affectation de noms à des DLL.
aliasname Facultatif. Nom de la procédure de la DLL ou de la ressource de code. Si le premier caractère n’est pas un nombre (#), aliasname est le nom du point d’entrée de procédure dans la DLL. Si (#) est le premier caractère, tous les caractères qui suivent doivent indiquer le nombre ordinal de point d’entrée de procédure.
arglist Facultatif. Liste des variables représentant des arguments transmis à la procédure lorsqu'elle est appelée.
type Facultatif. Type de données de la valeur renvoyée par une procédure Function. Il peut s'agir d'un des suivants : octet, Booleen, entier, Long, LongLong, LongPtr, Devise, Unique, Double, Decimal (non pris en charge actuellement), Date, Chaîne (longueur variable uniquement), Variante, un type défini par l'utilisateur ou un type d'objet. (LongLong est un type déclaré valide uniquement sur les plateformes 64 bits.)

La syntaxe et les éléments de l’argument arglist sont les suivants :

[ Optional ] [ ByVal | ByRef ] [ ParamArray ] varname [ ( ) ] [ Astype ]

Élément Description
Optional Optional. Indique qu’un argument n’est pas nécessaire. Si utilisé, tous les arguments suivants dans arglist doivent également être facultatifs et déclarés à l’aide du mot clé Optional. Optional ne peut pas être utilisé pour un argument si ParamArray est utilisé.
ByVal Optional. Indique que l’argument est transféré par valeur.
ByRef Indique que l’argument est transféré par référence. ByRef est la valeur par défaut dans VBA, contrairement à Visual Basic .NET.
ParamArray Facultatif. Utilisé uniquement comme le dernier argument dans arglist pour indiquer que l'argument final est un tableauoptionnel d'éléments Variant. Le mot clé ParamArray vous permet de transmettre un nombre arbitraire d'arguments. Le mot clé ParamArray ne peut pas être utilisé avec ByVal, ByRef ou Optional.
varname Obligatoire. Nom de la variable représentant l'argument transmis à la procédure. Il suit les conventions standard d'attribution de noms aux variables.
( ) Obligatoire pour les variables tableau. Indique que varname est un tableau.
type Facultatif. Type de données de l'argument transmis à la procédure. Il peut s'agir d'un des suivants : octet, Booleen, Entier, Long, LongLong, LongPtr, Devise, Unique, Double, Decimal (non pris en charge actuellement), Date, Chaîne (longueur variable uniquement), Objet, Variante, un type défini par l'utilisateur ou un type d'objet. (LongLong est un type déclaré valide uniquement sur les plateformes 64 bits.)

Remarques

Declare Sub First Lib "MyLib" () 

Si vous incluez une liste d'arguments, le nombre et le type des arguments sont vérifiés chaque fois que la procédure est appelée. Dans l'exemple suivant, la procédure prend un argument Long :

Declare Sub First Lib "MyLib" (X As Long) 

Remarque

  • Vous ne pouvez pas avoir de chaînes de longueur fixe dans la liste d’arguments d’une instruction Declare ; uniquement les chaînes de longueur variable peuvent être transmises aux procédures. Les chaînes de longueur fixe peuvent apparaître en tant qu’arguments de procédure, mais sont converties en chaînes de longueur variable avant d’être passées.
  • La constante vbNullString est utilisée lors de l'appel de procédures externes, lorsque la procédure externe exige une chaîne dont la valeur est nulle. Cela ne revient pas à une chaîne de longueur nulle ("").

Exemple

Cet exemple illustre comment l'instruction Declare est utilisée au niveau d'un module standard pour déclarer une référence à une procédure externe dans une bibliothèque de liens dynamiques (DLL). Vous pouvez placer les instructions Declare dans des modules de classe si les instructionsDeclare sont Private.

' In Microsoft Windows (16-bit): 
Declare Sub MessageBeep Lib "User" (ByVal N As Integer) 
' Assume SomeBeep is an alias for the procedure name. 
Declare Sub MessageBeep Lib "User" Alias "SomeBeep"(ByVal N As Integer) 
' Use an ordinal in the Alias clause to call GetWinFlags. 
Declare Function GetWinFlags Lib "Kernel" Alias "#132"()As Long 
 
' In 32-bit Microsoft Windows systems, specify the library USER32.DLL, 
' rather than USER.DLL. Use conditional compilation to write 
' code that can run on either Win32 or Win16. 
#If Win32 Then 
    Declare Sub MessageBeep Lib "User32" (ByVal N As Long) 
#Else 
    Declare Sub MessageBeep Lib "User" (ByVal N As Integer) 
#End If 
 
 
' 64-bit Declare statement example: 
Declare PtrSafe Function GetActiveWindow Lib "User32" () As LongPtr 
 
' Conditional Compilation Example 
#If Vba7 Then 
     ' Code is running in  32-bit or 64-bit VBA7. 
     #If Win64 Then 
          ' Code is running in 64-bit VBA7. 
     #Else 
          ' Code is not running in 64-bit VBA7. 
     #End If 
#Else 
     ' Code is NOT running in 32-bit or 64-bit VBA7. 
#End If 
 

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.