Automatyczna aktualizacja monet rodzinnych

Cze wszystkim!

 

W moim wiecznym poszukiwaniu złożoności i w celu ułatwienia innym korzystania z narzędzia, staram się zrobić mały "moduł" w VBA, aby w jednym pliku danych zmieniały się kursy monet na SW.

 

Aby to zrobić, oczywiście zacząłem od przeprowadzenia testów na jednej części.

 

Utworzyłem tabelę rodziny pomieszczeń i dlatego ustawiłem żądane wymiary, tworząc dwie linie: "początek" i "modyfikowalny"

 

Stworzyłem więc mój plik z danymi z oryginalnymi wymiarami części (na wypadek, gdyby zostały zapomniane z powodu ich zmiany!)

 

Na tym również utworzyłem przycisk, a w nim następujące polecenie VBA:

 

[kod]Sub Changement_cote()

Workbooks.Open ("Skoroszyt testowy.xlsm")
"Modyfikacja
Skoroszyty("Test-skoroszyt.xlsm"). Arkusze robocze("Arkusz1"). Zakres("B4"). Wartość = "='[Baza danych.xlsm]Arkusz1'!$B$4"

Skoroszyty("Test-skoroszyt.xlsm"). Arkusze robocze("Arkusz1"). Zakres("C4"). Wartość = "='[Baza danych.xlsm]Arkusz1'!$C$4"

Skoroszyty("Test-skoroszyt.xlsm"). Zamknij 'Zamykanie pliku testowego

 

 

Skoroszyty.Otwórz ("00-XXXXX-0-Came.xlsx") 'Pokój rodzinny

"Modyfikacja
Skoroszyty("00-XXXXX-0-Came.xlsx"). Arkusze robocze("Arkusz1"). Zakres("B4"). Wartość = "='[Baza danych.xlsm]Arkusz1'!$B$4"

Skoroszyty("00-XXXXX-0-Came.xlsx"). Arkusze robocze("Arkusz1"). Zakres("C4"). Wartość = "='[Baza danych.xlsm]Arkusz1'!$C$4"

Skoroszyty("00-XXXXX-0-Came.xlsx"). Zamknij 'Zamykanie pliku testowego

 

Koniec pod[/code]

 

Na razie nie dodałem automatycznej kopii zapasowej plików, ale proszą mnie o to, a także widzę zmianę w plikach, które nie używały "updatescreen = false" =)

 

Więc mój problem przychodzi później. Po dokonaniu modyfikacji otwieram ponownie solidworks, a rodzina części niestety nie aktualizuje się, mimo że jej plik jest aktualny. Muszę przejść przez "edytuj rodzinę części", aby się zaktualizować

 

(podczas tej operacji wykonuję tylko "edytuj rodzinę" i wychodzę, solidworks wydaje się iść i pobrać plik)

 

Czy istnieje polecenie VBA zezwalające na tę aktualizację w taki sposób, aby robiła to automatycznie?

Ponieważ to jest tylko pokój, to nie problem. Ale w przypadku złożonego zespołu składającego się tylko z 20 części może to być długie ^^"

 

Przepraszamy za chodnik i niedogodności,

Mam nadzieję, że uda mi się znaleźć rozwiązanie ^^"

 

Przyjacielski

 

Yoann powiedział:

 


base_donnee.jpg

Witam

 

Oto makro znalezione na forum SolidWorks:

 

https://forum.solidworks.com/thread/9335

 

Lub zapoznać się z instrukcją Pomocy SolidWorks:

http://help.solidworks.com/2012/English/api/sldworksapi/Get_or_Set_Whether_Edits_Update_Design_Table_Example_VB.htm

Hello@Lucas

 

mmmh... Funkcje takie jak "Dim swApp As SldWorks.SldWorks" nie mieszczą się w module VBA programu Excel?

 

Wyświetla mi się błąd, gdy próbuję uruchomić makro:

"Błąd kompilacji  : Nie zdefiniowano typu zdefiniowanego przez użytkownika"

 

Pomijając to, że rozumiem, że mówi mi, że to, co zdefiniowałem... nie jest zdefiniowany.... (Przyprawia cię o ból głowy tym zdaniem *zszokowana*)

 

Naprawdę nie rozumiem =/

 

przyjacielski

Aha, ale tworzysz rodzinę części z Excela?

 

Jak następnie zaimplementować go, aby pojawił się w SolidWorks?

Utworzył się jako plik .xlsx faktycznie ^^' , kiedy go zapisałem

 

Pomyślałem więc, że wykonam wszystkie manipulacje z mojego pliku bazy danych, aby uprościć przyszłe korzystanie z niego przez inne osoby.

Kiedy tworzę rodzinę części, nie mam dostępu do pliku Excel! Gdzie go znajdziesz?

Miałem do niego dostęp tylko dzięki temu, że rodzina została "zarejestrowana" ^^

 

Prawdę mówiąc, nie otwieram go przez Excela, ten drugi. Potrzebowałem go tylko, aby uzyskać dostęp do jego adresu "C:\...\came.xlsx", aby umieścić link w moim kodzie VBA

OK, w każdym razie, nie będziesz mógł zaktualizować rodziny części w SolidWorks z Excela: to jest makro SolidWorks, które ci oferowałem!

I jest pewne, że jest to o wiele mniej interesujące: aby go zaktualizować, zamiast otwierać rodzinę monet, musisz uruchomić makro to prawie to samo.

 

W przeciwnym razie automatyczne uruchamianie makra za każdym razem, gdy część jest uruchamiana, będzie naprawdę żmudne i spowolni oprogramowanie podczas otwierania pliku...

http://www.leguide3d.com/profiles/blogs/piloter-un-modele-3d-au-travers-d-excel

 

Znalazłem to, przetestuję, ale wydaje mi się, że to rozwiązanie =). Będę Cię informować na bieżąco!

1 polubienie

Przepraszam, że jestem trochę zmęczony, tak, możesz utworzyć makro SolidWorks z Excela, tak jak jest napisane w twoim linku.

 

Jeżeli część jest otwarta w SolidWorks, korzystając z instrukcji na rysunku:

 

http://api.ning.com/files/s2sZbafeBpX-mX9KHHPZMOqmYpSGIu93UHOfWU*M6CnBzflIcn0D5aoMp7YX937HiJ5u00KItfo8KQVFyrpA0TVLVgq-rvlW/Code1.PNG

 

Powinieneś być w stanie uruchomić makro, które zaproponowałem powyżej.

Nie martw się Lucas^^ weekend, myślę, że wszyscy są trochę zmęczeni^^

 

Rzeczywiście, próbowałem tego i nie wykrywa żadnego problemu =)

 

Z wyjątkiem później, kiedy próbuję zintegrować makro solidworks, które podałeś mi powyżej^^'

 

Dim swDoc jako SldWorks.ModelDoc2

 

nie jest rozpoznawany =/

 

 

Nie będąc w stanie używać makr solidworks w programie Excel, zacząłem szukać, jak mogę uruchomić makro solidworks z programu Excel.

 

Postąpiłem więc w następujący sposób

 

Ustaw swApp = CreateObject("SldWorks.Application")
Ustaw część = swApp.ActiveDoc
Dim boolstatus As Boolean

Przyciemnij nazwę pliku jako ciąg
filename = swApp.GetCurrentMacroPathName
filename = Left(nazwa_pliku, InStrRev(nazwa pliku, "\")) + "Makro1.swp"
boolstatus = swApp.RunMacro(nazwa pliku, "Makro11", "alternatywny")
boolstatus = swApp.RunMacro(nazwa pliku, "Makro11", "główny")

 

A teraz mój przycisk "aktualizuj" z boku również aktualizuje rodziny części w solidworks, uruchamiając makro, @Lucas mi dał =)

 

(https://forum.solidworks.com/thread/9335)

 

Wszystko, czego brakuje, to dowiedzieć się, jak usunąć widok stron za pomocą polecenia takiego jak "screenupdate.false" wersja solidworks.

 

Ale to naprawdę nie jest denerwujące =)

 

Jeszcze raz dziękuję za pomoc Lucasowi^^