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!