Ik probeer momenteel een functie in een macro te implementeren, maar ik zit vast... Ik doe dan ook een beroep op uw kennis! Ik wou dat ik de datamap van een PDM-bestand kon openen via een VBA-macro, maar het resultaat dat ik krijg, laat me perplex ahaha
Hier is het stukje code waarin we geïnteresseerd zijn:
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)
Door snel te testen, denk ik dat de functie alleen de kaart weergeeft zonder er toegang toe te hebben vanuit het oogpunt van bewerking, dus je moet het "plaatsen" in een venster met een achtergrond (in principe op een gebruikersformulier met een grijze achtergrond verschijnt het normaal, anders verschijnt het in de macro-editor in transparantie)
Of door een gebruikersformulier te maken dat knoppen bevat en het codefragment aanroept. Of zet het direct in de procedure voor het activeren van het formulier. Aan de andere kant moet u de hoogte- en breedte-informatie van de kaart ophalen om het formaat van het formulier correct te wijzigen en de hele kaart weer te geven. Met behulp van de api als je in vb#net bent, is het dit stukje code:
' Get the size needed to display the card
Dim width As Integer
Dim height As Integer
view.GetCardSize(width, height)
Anders ongeveer 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
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
Dank je wel @Cyril_f ! Niet de eerste keer dat het je lukt om me te deblokkeren met een macro verhaal ahaha Ik ga ook zelf graven en ik zal ook terugkeren als ik de oplossing vind!
Ik heb er nogal wat gecodeerd, of het nu op SW / PDM / Excel / Word / Outlook is, dus als ik kan helpen.
Dus na het testen is het op SW gewoon een probleem van het declareren van variabelen. Excel doet het goed zonder de CardView-variabele te declareren. In de SW api moet je toevoegen:
Dim CardView As IEdmCardView63 'ou IEdmCardView64 ça dépend de la version majeur de PDM
het lijkt het me eindelijk te laten zien!! Ik had de variabelen aangegeven, maar binnen de procedure van de UserForm_Activate ... Door het buiten de instructie te plaatsen, laat het me het zien! Ik moet nog steeds graven, want aan mijn kant wordt het weergegeven als een afbeelding in het UserForm die ik niet kan wijzigen of er iets aan kan doen
Ja, dat is het probleem, de weergegeven kaart is slechts een "dood" object. Je moet in de opties kijken en het lijkt mij dat je andere functies moet uitvoeren om vervolgens de wijzigingen toe te passen