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