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 …]])

Valeur de retour :

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()

Aidez-nous !