Anzeige der Datenkarte über VBA-Makro

Hallo ihr alle :smiley:

Ich versuche gerade, eine Funktion in einem Makro zu implementieren, aber ich komme nicht weiter... Ich appelliere daher an Ihr Wissen!
Ich wünschte, ich könnte die Datenkarte einer PDM-Datei über ein VBA-Makro öffnen, aber das Ergebnis, das ich bekomme, lässt mich ratlos zurück

Hier ist der Code, an dem wir interessiert sind:

Global File As IEdmFile13
Global Folder As IEdmFolder10
Set Folder = vault.GetFolderFromPath(fs.GetParentFolderName(CheminFichier))
Set File = Folder.GetFile(fs.GetFileName(CheminFichier))
Dim CardView As IEdmCardView63
Set CardView = Folder.CreateCardView2(File.ID, 0, 400, 100, , 253)
CardView.ShowWindow (True)

Und das Ergebnis sieht wie folgt aus...

Es zeigt die Datenkarte halbtransparent und wenn ich mit der Maus darüber fahre, verschwindet sie!
Hilfe zur Funktion: CreateCardView2

Wenn jemand eine Idee hat, wie man das macht? Ob mit dieser oder einer anderen Methode, ich bin voll und ganz dafür!

Vielen Dank im Voraus :wink:

Hallo

Durch schnelles Testen denke ich, dass die Funktion die Karte nur ohne Zugriff auf sie aus Sicht der Bearbeitung anzeigt, so dass man sie in einem Fenster "platzieren" muss, das einen Hintergrund hat (grundsätzlich erscheint sie auf einem Benutzerformular mit grauem Hintergrund normal, ansonsten erscheint sie im Makroeditor in Transparenz)

1 „Gefällt mir“

Ah, ich verstehe! Aber wie "installiert" man es in einem UserForm?!

Oder indem Sie ein Benutzerformular erstellen, das Schaltflächen enthält und den Codeausschnitt aufruft.
Oder fügen Sie es direkt in die Prozedur zur Aktivierung des Formulars ein.
Auf der anderen Seite müssen Sie die Höhen- und Breiteninformationen der Kachel abrufen, um die Größe des Formulars korrekt zu ändern und die gesamte Karte anzuzeigen.
Mit Hilfe der API, wenn Sie sich in vb#net befinden, handelt es sich um diesen Code:

' Get the size needed to display the card 
        Dim width As Integer
        Dim height As Integer
        view.GetCardSize(width, height)

Ansonsten grob in vba:

Private Sub UserForm_Activate()
Dim File As IEdmFile13
Dim Folder As IEdmFolder10
Dim width As Long
Dim height As Long
Set vault = New EdmVault5

vault.LoginAuto "_TDM_PROD", 0
CheminFichier = "C:\xxx\xxx"
Set Folder = vault.GetFolderFromPath(CheminFichier)
Set File = Folder.GetFile("xxx.SLDPRT")
Set CardView = Folder.CreateCardView2(File.ID, 0, 400, 100, , 253)
CardView.GetCardSize width, height
UserForm1.width = width + 80 'à affiner pour la largeur
UserForm1.height = height + 10 'à affiner pour la hauteur

CardView.ShowWindow (True)
End Sub

Selbst nach diesem Code zeigt es mir immer noch die Datenkarte in Transparenz in der Mitte des Nichts und nicht auf dem UserForm :confused:

Haben Sie es in das UserForm-Aktivierungsverfahren eingefügt?
Sie müssen dieses Formular auch in einem Hauptmodul von Userform.Show aufrufen

Ja, in meiner ersten Funktion führe ich Folgendes aus:

UserForm1.Show 

und in UserForm1 habe ich den folgenden Code:


Public Sub UserForm_Activate()

Dim l As Long
Dim h As Long

        Set Folder = vault.GetFolderFromPath(fs.GetParentFolderName(CheminFichier))
        Set File = Folder.GetFile(fs.GetFileName(CheminFichier))
        Dim CardView As IEdmCardView63
        Set CardView = Folder.CreateCardView2(File.ID, 0, 400, 100, , 253)
        CardView.GetCardSize l, h
        UserForm1.Width = l + 80
        UserForm1.Height = h + 80
        CardView.ShowWindow (True)
End Sub

VBA-Code in Excel oder SW? (Ich habe auf Excel getestet)

VBA unter SolidWorks!

Ich werde etwas später testen und Feedback geben

1 „Gefällt mir“

Vielen Dank @Cyril.f ! Nicht das erste Mal, dass du es schaffst, mich mit einer Makro-Story zu befreien, ahaha :slight_smile:
Ich werde auch auf eigene Faust graben und ich werde auch zurückkommen, wenn ich die Lösung finde!

:wink: Ich habe schon einige programmiert, sei es auf SW/PDM/Excel/Word/Outllook, also wenn ich helfen kann.

Nach dem Testen ist es bei SW also nur ein Problem beim Deklarieren von Variablen. Excel kommt gut aus, ohne die Variable CardView zu deklarieren.
In der SW-API müssen Sie hinzufügen:

Dim CardView As IEdmCardView63 'ou IEdmCardView64 ça dépend de la version majeur de PDM
1 „Gefällt mir“

Es scheint es mir endlich zu zeigen!! Ich hatte die Variablen deklariert, aber innerhalb des Verfahrens der UserForm_Activate ... Indem ich es außerhalb der Anleitung platziere, zeigt es es mir!
Ich muss immer noch graben, weil es auf meiner Seite als Bild im UserForm :confused: angezeigt wird, ich kann es nicht ändern oder etwas daran tun

Ja, das ist das Problem, die angezeigte Karte ist nur ein "totes" Objekt. Sie müssen in den Optionen nachsehen und es scheint mir, dass Sie andere Funktionen ausführen müssen, um die Änderungen dann zu übernehmen

1 „Gefällt mir“