Showing results 1 to 4 of 4

Thread: Script.Add... funktioniert nicht

  1. #1
    Join Date
    29.07.2007
    Location
    Germany
    Posts
    192

    Default Script.Add... funktioniert nicht

    Hallo!

    Ich versuche gerade per VBA bei einem Script im Dachprojekt eine Funktion aus einem Unterprojekt einzufügen und bekomme eine Fehlermeldung (siehe Screenshot).

    Gibt es etwas zu beachten bei Dachprojekt/Unterprojekt oder mache ich etwas anderes falsch?

    Hat jemand eine Idee?

    Gruß,

    H.-P.
    Last edited by hp : 24th March 2010 at 10:22
    string zenon = "7.60 Build61612 / 8.00 Build62073/ 8.10 Build62573";
    string Windows = "7 / 10 / 2016";
    string VMware = "Workstation / VMware ESXi";

  2. #2
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Script.Add... funktioniert nicht

    Ich habe das VBA Beispiel (von der hier erhätlichen VBA Hilfe) ein wenig adaptiert und dies funktioniert (in einem Script vom Dachprojekt wird eine Funktion vom einem Unterprojekt eingefügt):

    Sub zenOn_ScriptExample()
        '**************** Use this code in the editor ****************
        
        Dim zScript As Script
        Dim i As Integer
        
        'Initialize the script object with the first script in the scripts object (list)
        Set zScript = MyWorkspace.Application.Projects.Item("TOP_PROJ").Scripts.Item(0)
        
        'If there is no script available (no script in the scripts object),...
        If zScript Is Nothing Then
            '...then inform the user
            MsgBox ("No Script available")
        'otherwise:
        Else
            'Output the name of the script
            Debug.Print "Scriptname: " & zScript.Name
            
            'For every function in the script...
            For i = 0 To zScript.Count - 1
                '...output the name of the function
                Debug.Print i + 1 & ". Function: " & zScript.Item(i).Name
            Next i
    
            'Add the picSTART function to the script
            zScript.Add (MyWorkspace.Application.Projects.Item("SUB_PROJ").RtFunctions.Item("picSTART").ID)
            
        End If
    End Sub

  3. #3
    Join Date
    29.07.2007
    Location
    Germany
    Posts
    192

    Default AW: Script.Add... funktioniert nicht

    Das Beispiel entspricht eigentlich meinem Code. Es funktioniert aber trotzdem nicht!

    Ich habe es nun noch einmal mit folgendem Einzeiler versucht:

    Private Sub Script_in_DP_erweitern()
            
        'ApplicationED.Projects.Item("DACHPROJEKT").Scripts.Item("DP_DRV_H_Alle_Projekte").Add (ApplicationED.Projects.Item("RWA_01A_03A_MM_UUXX FG1").RtFunctions.Item("_DP_DRV_H_RWA_01A_03A_MM_UUXX FG1_MODBUS RTU").ID)
        MyWorkspace.Application.Projects.Item("DACHPROJEKT").Scripts.Item("DP_DRV_H_Alle_Projekte").Add (MyWorkspace.Application.Projects.Item("RWA_01A_03A_MM_UUXX FG1").RtFunctions.Item("_DP_DRV_H_RWA_01A_03A_MM_UUXX FG1_MODBUS RTU").ID)
    
        'zScript.Add (MyWorkspace.Application.Projects.Item("SUB_PROJ").RtFunctions.Item("picSTART").ID)
        
    End Sub

    Das Ergebnis ist wieder die gleiche Fehlermeldung wie in meinem ersten Post. (siehe Anhang)
    Tippfehler habe ich ausgeschlossen, alle Referenzen auf die Objekte stimmen, sieht man im Überwachungsfenster vom VBA Editor. (siehe Anhang)

    Es scheint ein grundsätzliches Problem zu sein.

    Interessanterweise wird nach dem Fehler bei dem Script im Editor eine gelöschte Funktion angezeigt. (siehe Anhang)

    Gibt es eigentleich einen Unterschied zwischen "MyWorkspace.Application" und "ApplicationED"?

    Gruß,

    H.-P.
    Last edited by hp : 24th March 2010 at 10:22
    string zenon = "7.60 Build61612 / 8.00 Build62073/ 8.10 Build62573";
    string Windows = "7 / 10 / 2016";
    string VMware = "Workstation / VMware ESXi";

  4. #4

    Default Re: Script.Add... funktioniert nicht

    Ich konnte jetzt die Ursache feststellen.

    Leider scheint es hier eine Einschränkung in VBA gegenüber die Oberfläche zu geben. Wenn die Funktions ID an die Methode "Add" übergeben wird, bezieht sich das in VBA immer auf das Projekt wo das Script vorhanden ist.

    Ist zufällig im Dachprojekt eine Funktion mit der gleiche ID als die Funktion im Unterprojekt vorhanden, wird der VBA Code ohne Fehlermeldung ausgeführt, jedoch wird auch die Funktion vom Dachprojekt anstatt der des Unterprojektes verknüpft.

    Damit Funktionen von Unterprojekte hinzugefügt werden können, müsste die Methode "Add" ein zusätzlicher optionaler Parameter "Project" bekommen. Ich werde einen entsprechenden Eintrag zur Erweiterung dieser Funktionalität in eine zukünftige zenon Version an unser Produktmanagement weiterleiten.

    (Natürlich könnte stattdessen auch ein Object vom Typ "rtFunction" an die Add Methode übergeben werden, womit das Problem auch gelöst wäre, allerdings wäre man so nicht mehr kompatibel zu bereits bestehenden VBA Code in Projekte älterer Versionen.)

Similar Threads

  1. Grafik nicht vorhanden im Testmodus Combielement
    By maerz@staudinger-est.de in forum zenon Supervisor
    Replies: 1
    Last Post: 17th September 2008, 09:06

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •