Wyświetlanie mapy danych za pomocą makra VBA

Cze wszystkim :smiley:

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ę :wink:

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 :confused:

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)

VBA w SolidWorks!

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 :slight_smile:
Zamierzam też kopać na własną rękę i też wrócę, jeśli znajdę rozwiązanie!

:wink: 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 :confused: , 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