Funktion CallByName

Ruft eine Unterroutine anhand ihres Zeichenfolgennamens auf.

Syntax:


  CallByName(Objekt As Object, ProgName As String, Aufruftyp As Integer [,Arg0 [,Arg1 …]])

Rückgabewert:

result: Eine optionale Variable, die das Ergebnis der aufgerufenen Methode oder Eigenschaft enthält.

Parameter:

Objekt: Ein Basismodul, eine Instanz ClassModule oder ein UNO-Dienst, der Eigenschaften oder Methoden enthält.

ProgName: Die aufgerufene Funktion, Sub oder Eigenschaft.

Aufruftyp: Die Art der durchgeführten Aktion wie "Get", "Let", "Method" und "Set".

Arg0, Arg1 …: Die optionalen Parameter für Function, die als Positionsargumente angegeben werden.

Argumente werden in genau derselben Reihenfolge bereitgestellt, die in der Methodensignatur definiert ist. Schlüsselwortargumente sind nicht möglich.

Wert

Beschreibung für CallType

1

Method: Ruft eine Prozedur als Funktion oder Subroutine auf.

2

Get: Liest eine Eigenschaft oder einen Variableninhalt.

4

Let: Weist einem Eigenschaft oder einer Variablen einen Inhalt zu.

8

Set: Weist einer Variablen Object oder Variant einen Referenzwert zu.


Beispiel:

  1. Ein Modul Calc.Maths enthält eine Funktion Multiply, die eine variierende Liste von Zahlen erwartet.

  2. Informationen von ScriptForge.Platform.Architecture werden abgerufen.

  3. Eigenschaft DisplayDirectory des UNO-Diensts com.sun.star.ui .dialogs.FilePicker wird auf das Home-Verzeichnis des Benutzers gesetzt, sein Inhalt wird zweimal gelesen.


  Sub CallByName_example
      Const _Method = 1, _Get = 2, _Let = 4, _Set = 8
  
      BasicLibraries.loadLibrary("Calc") ' Calc.Maths-Benutzer-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

Modul Calc.Maths


  Option Compatible ' Module Calc.Maths
  Option Explicit
  
  Public Function Multiply(ParamArray args() As Double) As Variant
      ''' Multipliziert eine variable Zahlenliste '''
      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()

Bitte unterstützen Sie uns!