Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Engineering Base
  Zugriff auf Verknüpfungen in VBA

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Project Builder automatisiert Anlagenkonfiguration
Autor(16237) Thema:  Zugriff auf Verknüpfungen in VBA (2422 mal gelesen)
WTE
Mitglied
Informatiker

Sehen Sie sich das Profil von WTE an!   Senden Sie eine Private Message an WTE  Schreiben Sie einen Gästebucheintrag für WTE

Beiträge: 5
Registriert: 13.08.2014

erstellt am: 21. Aug. 2014 09:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Gemeinde, 

kennt einer eine Möglichkeit, wie ich per VBA-Makro auf Verknüpfungen zugreifen kann? Hintergrund ist folgender: Ich würde gerne per Makro die erzeugten Kabelziele vertauschen. Die Kabelziele sind ja nur Verknüpfungen auf Elemente, die im Betriebsmittelordner angelegt sind. Leider kann ich mir noch nicht einmal die Attribut-ID’s der Kabelziele anzeigen lassen und habe daher keinen Ansatzpunkt.

Hat jemand eine Idee, wie ich dieses Problem lösen bzw. im Ansatz lösen kann? 

Danke für eure Hilfe 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ismo
Mitglied



Sehen Sie sich das Profil von ismo an!   Senden Sie eine Private Message an ismo  Schreiben Sie einen Gästebucheintrag für ismo

Beiträge: 97
Registriert: 20.11.2011

erstellt am: 22. Aug. 2014 08:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für WTE 10 Unities + Antwort hilfreich

via object.sourceassociations

Schau mal im Thread weiter unten "Kabelziele aus Drahtzielen generieren", das dürfte dir weiterhelfen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

WTE
Mitglied
Informatiker

Sehen Sie sich das Profil von WTE an!   Senden Sie eine Private Message an WTE  Schreiben Sie einen Gästebucheintrag für WTE

Beiträge: 5
Registriert: 13.08.2014

erstellt am: 27. Aug. 2014 10:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

leider hat dieses auch nicht funktioniert und der andere Thread tat mir nicht wirklich weiterhelfen 

Es muss noch einen anderen Weg geben, um die Verknüpfungen zu vertauschen - händisch funktioniert es ja schließlich auch. Und das sowas gehen muss, beweist das Makro "Kabelziele aus Drahtziele generieren". Leider ist dies gesperrt, sodass es mir den VBA-Code der sich dahinter verbringt nicht einsehen kann.

Hat noch jemand einen Lösungsweg?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mike EB
Mitglied



Sehen Sie sich das Profil von Mike EB an!   Senden Sie eine Private Message an Mike EB  Schreiben Sie einen Gästebucheintrag für Mike EB

Beiträge: 77
Registriert: 15.12.2010

EB 6.4.2

erstellt am: 08. Sep. 2014 15:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für WTE 10 Unities + Antwort hilfreich

Hallo,

ich habe mir dafür mal folgendes Makro geschrieben:

' SwitchWireTargets
' Tauscht Ziele eines Drahtes
'
' ABUS Kransysteme GmbH
' Mike Ebert 09.01.2013
'
' Change log:
' Datum    Name            Bemerkung
'
Public Sub SwitchWireTargets()

    Dim colObj As ObjectItems
    Dim oObj As ObjectItem
    Dim oTgt As ObjectItem
    Dim oTgt1 As ObjectItem
    Dim oTgt2 As ObjectItem
    Dim pTgt1Role As AucRole
    Dim pTgt2Role As AucRole
   
    Set colObj = Application.Selection
    For Each oObj In colObj
        If oObj.Kind = aucObjWire Then 'Nur bei Draht
            With oObj.TargetAssociations
                If .Count = 2 Then 'Zwei Drahtziele
'                    If (.Item(1).Role = aucRolePin1Wire And .Item(2).Role = aucRolePin2Wire) Or _
                      (.Item(2).Role = aucRolePin1Wire And .Item(1).Role = aucRolePin2Wire) Then
                    Set oTgt1 = .Item(1).RelatedObject
                    Set oTgt2 = .Item(2).RelatedObject
                    pTgt1Role = .Item(1).Role
                    pTgt2Role = .Item(2).Role
                    .Delete pTgt1Role, oTgt1
                    .Delete pTgt2Role, oTgt2
                ElseIf .Count = 1 Then 'Ein Drahtziel
                    Set oTgt1 = .Item(1).RelatedObject
                    pTgt1Role = .Item(1).Role
                    .Delete pTgt1Role, oTgt1
                Else
                    Exit Sub
                End If
                'Drahtziele tauschen
                Set oTgt = oTgt1
                Set oTgt1 = oTgt2
                Set oTgt2 = oTgt
                'Neue Ziele setzen
                .New pTgt1Role, oTgt1
                .New pTgt2Role, oTgt2
            End With
           
        End If
    Next oObj
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MeckPom
Mitglied
Ing.


Sehen Sie sich das Profil von MeckPom an!   Senden Sie eine Private Message an MeckPom  Schreiben Sie einen Gästebucheintrag für MeckPom

Beiträge: 47
Registriert: 27.09.2012

erstellt am: 10. Sep. 2014 22:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für WTE 10 Unities + Antwort hilfreich

Wenn man sich das Objektmodell im Local-Fenster des Debuggers ansieht, ist es nicht allzuschwer damit kalrzukommen. In der EB-VBA-Hilfe (nicht via F1) ist dies auch erläutert.
Jedes ObjectItem hat die "arrays" TargetAssociations und SourceAssociations. Im Ersten stehen die Verweise zu einem andern Objekt (z.B. Gerät=>Funktion von dem Gerät aus betrachtet). Im Zweiten stehen die Verweise, die von einem andern Objekt kommen (z.B. Gerät=>Funktion von der Funktion aus betrachtet).
Die zugehörigen Typendefinitionen sind Association und Associations. Association.RelatedObject beschreibt die Gegenstelle der Verbindung und Association.Role beschreibt die Art der Verknüpfung.

Mit den für Source- bzw. TargetAssociations definierten Methoden kann man die Verknüpfungen normal bearbeiten. Zu beachten ist dabei, daß für ein Objekt nicht alle verfügbaren Arten statthaft sind. Für die meisten Arten gibt es aber weitgehend selbsterklärende Konstanten (aucRoleDev....). Desweiteren ist unter TargetAssociations für jede Art nur eine Verknüpfung zulässig. Es fehlt eine Methode, um einfach das "RelatedObject" abzuändern. Das bedeutet, daß man erst die Verknüpfung zum alten Objekt löschen muß und dann die neue Verknüpfung anlegt.

Es gibt ein paar wenige Verknüpfungen, die zwar im Explorer angezeigt werden, aber in dem VBA-Objekt nicht zu finden sind.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

xymaddin
Mitglied



Sehen Sie sich das Profil von xymaddin an!   Senden Sie eine Private Message an xymaddin  Schreiben Sie einen Gästebucheintrag für xymaddin

Beiträge: 45
Registriert: 13.01.2016

erstellt am: 28. Feb. 2018 15:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für WTE 10 Unities + Antwort hilfreich

Hallo Leute

ich weiss zwar nicht ob es hier hingehört aber da es um Verknüpfungen geht versuch ich es mal
Ich möchte an einem Blattobjekt das Zugeordnete Betriebsmittel auslesen
wie geht das?

------------------
Grüße xymaddin
EB 6.6.1 Power User

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

WickieEB
Mitglied
Alg. Konstruktör


Sehen Sie sich das Profil von WickieEB an!   Senden Sie eine Private Message an WickieEB  Schreiben Sie einen Gästebucheintrag für WickieEB

Beiträge: 34
Registriert: 16.04.2015

erstellt am: 02. Mrz. 2018 17:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für WTE 10 Unities + Antwort hilfreich

Hi,
wie Meckpom geschrieben hat, muss man in einen der beiden Assozitionscontainer schauen. Für die Beziehung Gerät/Funktion zu Blatt ist das dann SourceAssociation mit den Kennnummern 106/107.  Oder als Formel: Rb106;Ar;

Gruß WickieEB

------------------
Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war. (Bertold Brecht)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

WM1407
Mitglied


Sehen Sie sich das Profil von WM1407 an!   Senden Sie eine Private Message an WM1407  Schreiben Sie einen Gästebucheintrag für WM1407

Beiträge: 4
Registriert: 09.05.2016

erstellt am: 26. Apr. 2018 09:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für WTE 10 Unities + Antwort hilfreich

Bei Kabeln funktioniert das leider nicht. Hat jemand eine Idee wie das bei Kabeln geht?
Vielen Dank!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexSt
Mitglied
Elektrokonstrukteur


Sehen Sie sich das Profil von AlexSt an!   Senden Sie eine Private Message an AlexSt  Schreiben Sie einen Gästebucheintrag für AlexSt

Beiträge: 176
Registriert: 21.02.2012

ELCAD 7
Engineering Base 6
EPLAN P8 V2

erstellt am: 04. Mai. 2018 12:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für WTE 10 Unities + Antwort hilfreich


VBA1.JPG


VBA2.JPG

 
Hi WM1407,

das Objekt im VBA muss vom Typ "Cable" sein. So kommst du an die "Destinations" (siehe Screenshot). Ob und wie man diese dann tauschen kann ist noch zu prüfen  .

------------------
Gruß aus Bielefeld 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

WM1407
Mitglied


Sehen Sie sich das Profil von WM1407 an!   Senden Sie eine Private Message an WM1407  Schreiben Sie einen Gästebucheintrag für WM1407

Beiträge: 4
Registriert: 09.05.2016

erstellt am: 04. Mai. 2018 12:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für WTE 10 Unities + Antwort hilfreich

Hallo, danke für die Antwort.
Hatte das auch schon ausprobiert, aber EB wollte die Kabelziele selbst dann nicht so recht tauschen...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz