Contenu

# Fonction CallByName

Appelle une sous-routine par son nom de chaîne.

### Syntaxe :

      CallByName(object As Object, ProcName As String, CallType As Integer [,arg0 [,arg1 …]])

### Type de renvoie :

result : une variable facultative qui contient le résultat de la méthode ou de la propriété appelée.

### Paramètres :

object : un module de base, une instance de ClassModule ou un service UNO contenant des propriétés ou des méthodes.

ProcName : la Function, Sub ou Property qui est appelée.

CallType : le type d'action effectuée, comme Get, Let, Method et Set.

arg0, arg1 … : Les paramètres facultatifs Function donnés comme arguments positionnels.

Les arguments sont fournis dans le même ordre que celui défini dans la signature de la méthode. Les arguments de mot-clé ne sont pas possibles.

Valeur | Description de CallType
--- | ---
1 | Method : appelle une procédure en tant que fonction ou sous-programme.
2 | Get : lit une propriété ou un contenu de variable.
4 | Let : attribue un contenu à une Property ou à une variable.
8 | Set : attribue une valeur de référence à une variable Object ou Variant.

### Exemple :

1. Un module Calc.Maths contient une fonction Multiply attendant une liste variable de nombres.

2. Les informations ScriptForge.Platform.Architecture sont récupérées.

3. La propriété DisplayDirectory du service UNO com.sun.star.ui.dialogs.FilePicker est définie sur le dossier d'accueil de l'utilisateur, son contenu est lu deux fois.

      Sub CallByName_example
          Const _Method = 1, _Get = 2, _Let = 4, _Set = 8

          BasicLibraries.loadLibrary("Calc") ' Calc.Maths user library.module
          Dim cm As Object : cm = Calc.Maths
          MsgBox CallByName(cm, "Multiply", _Method, 3, 45, 1, 89)		' 12015
          MsgBox CallByName(cm, "Multiply", _Method, 1.85e15, 44, 10^8)	' 8.14E+24

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
          Dim p As Object : p = CreateScriptService("ScriptForge.Platform")
          MsgBox CallByName(p, "Architecture", _Get) ' 32bit/64bit

          Dim uno As Object : uno = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker")
          Dim fs As Object  : fs  = CreateScriptService("ScriptForge.FileSystem")
          CallByName(uno, "DisplayDirectory", _Let, fs.HomeFolder)
          MsgBox CallByName(uno, "DisplayDirectory", _Get)
          var = CallByName(uno, "getDisplayDirectory", _Get)
      End Sub

### Module Calc.Maths

      Option Compatible ' Calc.Maths module
      Option Explicit

      Public Function Multiply(ParamArray args() As Double) As Variant
          ''' Multiplier une liste variable de nombres '''
          Dim ndx As Integer
          If UBound(args) >= 0 Then
              Multiply = 1.0
              For ndx = 0 To UBound(args)
                  Multiply = Multiply * args(ndx)
              Next ndx
          End If
      End Function 'Calc.Maths.Multiply()

Rubriques connexes

Instruction Call

Service ScriptForge.Platform

Instruction Option Compatible

Instruction Option ClassModule

Aidez-nous !