Cze wszystkim
Obecnie próbuję zaimplementować funkcję w makrze, ale utknąłem... Dlatego odwołuję się do waszej wiedzy!
Chciałbym móc otworzyć mapę danych pliku PDM za pomocą makra VBA, ale wynik, który otrzymuję, wprawia mnie w zakłopotanie ahaha
Oto fragment kodu, który nas interesuje:
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)
A wynik jest następujący...
Pokazuje kartę danych w połowie przezroczystą, a kiedy najeżdżę na nią myszką, znika!
Pomoc dotycząca funkcji: CreateCardView2
Czy ktoś ma pomysł jak to zrobić? Niezależnie od tego, czy chodzi o tę, czy inną metodę, jestem za tym!
Z góry dziękuję
Witam
Testując na szybko, wydaje mi się, że funkcja wyświetla tylko mapę bez dostępu do niej z punktu widzenia edycji, więc trzeba ją "umieścić" w oknie, które ma tło (w zasadzie na userform z szarym tłem pojawia się normalnie, inaczej w edytorze makr pojawia się w przezroczystości)
1 polubienie
Ach, rozumiem! Ale jak to "zainstalować" w UserForm?!
Lub tworząc formularz użytkownika, który zawiera przyciski i wywołuje fragment kodu.
Lub umieść go bezpośrednio w procedurze aktywacji formularza.
Z drugiej strony musisz pobrać informacje o wysokości i szerokości karty, aby poprawnie zmienić rozmiar formularza i wyświetlić całą mapę.
W pomocy api, jeśli jesteś w vb#net, jest to ten fragment kodu:
' Get the size needed to display the card
Dim width As Integer
Dim height As Integer
view.GetCardSize(width, height)
W przeciwnym razie z grubsza w 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
Nawet po tym kodzie nadal pokazuje mi mapę danych w przezroczystości w środku niczego, a nie w formularzu użytkownika
Czy umieściłeś go w procedurze aktywacji UserForm?
Musisz również wywołać ten formularz w module głównym przez Userform.Pokaż
Tak, w mojej pierwszej funkcji wykonuję:
UserForm1.Show
a w UserForm1 mam następujący kod:
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
Kod VBA w Excelu lub SW? (Testowałem na Excelu)
Przetestuję trochę później i przekażę informację zwrotną
1 polubienie
Dziękujemy @Cyril_f ! Nie pierwszy raz udaje ci się odblokować mnie za pomocą historii makro ahaha
Zamierzam też kopać na własną rękę i też wrócę, jeśli znajdę rozwiązanie!
Zakodowałem całkiem sporo, czy to na SW / PDM / Excel / Word / Outllook, więc kiedy mogę pomóc.
Więc po testach, na SW jest tylko problem z deklarowaniem zmiennych. Program Excel dobrze sobie radzi bez deklarowania zmiennej CardView.
W API oprogramowania należy dodać:
Dim CardView As IEdmCardView63 'ou IEdmCardView64 ça dépend de la version majeur de PDM
1 polubienie
w końcu wydaje mi się, że mi to pokazuje!! Zadeklarowałem zmienne, ale w ramach procedury UserForm_Activate ... Umieszczając go poza instrukcją, pokazuje mi to!
Nadal muszę kopać, ponieważ z mojej strony wyświetla to jako obraz w UserForm , nie mogę go modyfikować ani nic na nim robić
Tak, na tym polega problem, wyświetlana mapa jest tylko "martwym" obiektem. Musisz zajrzeć w opcje i wydaje mi się, że musisz uruchomić inne funkcje, aby następnie zastosować zmiany
1 polubienie