Ulepsz X_T makr, aby utworzyć folder, który nie istnieje w Solidworks?

Mam już makro (które dołączam jako załącznik), które pozwala mi na eksport części lub złożenia w X_T w podfolderze "X_T FILES".

Potrzebowałbym, że gdy folder "X_T FILES" nie istnieje, może go utworzyć, aby wstawić do niego wyeksportowany plik, jak mam to zaprogramować?

Aktualny program:

 

Sub Sauvegarde_X_T()


Dim swApp As Object
Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Locatie Jako Ciąg
Dim Locatie_aangepast As String
Przyciemnij OpenDoc jako obiekt
Dim Extensie_nieuw As String
Dim Extensie_oud As String
Dim retval As String
Dim Naam As String
Dim Naam_aangepast As String

 

Ustaw swApp = CreateObject("SldWorks.Application")
Ustaw swModel = swApp.ActiveDoc
Ustaw OpenDoc = swApp.ActiveDoc()

Extensie_oud = ". SLDASM"
Extensie_nieuw = ". X_T"
Locatie = OpenDoc.GetPathName
Locatie_aangepast = Lewo(Locatie, Len(Lokatie) - 7)
retval = Dir$(Locatie_aangepast & Extensie_oud)
Naam = Dir$(Locatie)
Naam_aangepast = Lewo(Naam, Len(Naam) - 7)
Titel = OpenDoc.GetTitle
Titel = Lewo(Tytuł, (Len(Tytuł)))


    
Ustaw część = swApp.ActiveDoc

Przyciemnij ścieżkę pliku jako ciąg, nazwę pliku jako ciąg

FilePath = Left(Locatie, InStrRev(Locatie, "\"))
MsgBox FilePath & "X_T FILES" & Naam_aangepast & Extensie_nieuw
longstatus = Part.SaveAs3(Ścieżka Pliku & "PLIKI X_T\" & Naam_aangepast & Extensie_nieuw, 0, 0)

Koniec subwoofera


save_x_t_-_fichiers_x_t.zip

Zobacz tę stronę

http://www.beta.lynkoa.com/forum/3d/macro-enregistrement-en-pdf-dans-un-dossier-specifique

makro @jfaradon który jest teoretycznie kimś, kto wie o czym mówi
 
może być początkiem orientacji urywka
 
@+ ;-))
 
 
 

Cześć, musimy dodać po tej linii:

FilePath = Left(Locatie, InStrRev(Locatie, "\"))

Jeśli dir$(ŚcieżkaPliku) ="" to

mkdir ścieżka_pliku

Zakończ się, jeśli

@PL tylko dodaj co skoro mówisz to tylko dodajesz po tej linijce ale nic nie ma

@+

1 polubienie
Tak, GT, przepraszam, odpowiedź poszła zbyt szybko, edytowałem później.
1 polubienie

i tak @PL problem jest tam

Reedycja odpowiedzi bez żadnego odnośnika do reedycji

a jednak x razy zapytał naszego CM

O ile to możliwe, należy unikać ponownej publikacji odpowiedzi

Aby udzielić odpowiedzi

@+ ;-))

@PL gdy patrzysz na wątek komunikacyjny z odpowiedziami

Twoja przeredagowana odpowiedź zachowuje ten sam czas

Tak więc jeśli chodzi o czas, moja odpowiedź nadeszła później, a jednak tak nie jest

Stąd niezrozumienie czytania odpowiedzi w tym wątku komunikacyjnym

W celu zapewnienia większej jasności wątku komunikacyjnego należy powiadomić o pojęciu ponownego wydania

I tak jest często

Na który z + często odpowiada się na pytanie bez odpowiedzi na pierwszy rzut oka

A kiedy go publikujesz, zawsze jesteś pierwszym, który go publikuje

Ale jeśli odświeżymy się, zdamy sobie sprawę, że tak nie jest i że dana osoba już odpowiedziała

Dyskomfort występuje tam najczęściej

@+ ;-))

 

@+ ;-))

To nie działa...

Nie tworzy pliku, jeśli nie istnieje.

Spróbuj użyć dir$ zamiast dir

Naprawdę nie rozumiem ...

Nie powinienem dodawać rzeczy między ""?

Podoba Ci się nazwa folderu, który powinien utworzyć? Bo nie rozumiem, w jaki sposób program utworzy folder o odpowiedniej nazwie?

 

Jeśli dir$(ŚcieżkaPliku) ="" to

mkdir ścieżka_pliku

Zakończ się, jeśli

Witam

Funkcja MkDir nie akceptuje tworzenia innego repozytorium na innym dysku niż ten, na którym wykonywane jest makro.

Preferuj metodę: My.Computer.FileSystem.CreateDirectory

Przeczytaj więcej tutaj: https://msdn.microsoft.com/fr-fr/library/2wwkaadb%28v=vs.90%29.aspx

I czy to działa?

Jeśli Dir$(ŚCIEŻKA PLIKU, vbDirectory) = "" Następnie
    Powłoka ("cmd /c mkdir """ & FILEPATH & """")
Zakończ jeżeli:

To też nie działa. Myślę, że zrezygnuję z tego pomysłu.

Jeśli ktoś ma inną sugestię, zawsze jestem zainteresowany.

Mimo wszystko dziękuję tym, którzy poświęcili czas na poszukiwania.

Właśnie przetestowałem to pomyślnie:

Sub main()
   
Dim swApp jako obiekt, część jako obiekt, OpenDoc jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Locatie As String, Locatie_aangepast As String, Extensie_nieuw As String, Extensie_oud As String, retval As String
Dim Naam As String, Naam_aangepast As String, FilePath As String, FileName As String, FolderPath As String

Ustaw swApp = CreateObject("SldWorks.Application")
Ustaw swModel = swApp.ActiveDoc
Ustaw OpenDoc = swApp.ActiveDoc()

Extensie_oud = ". SLDASM"
Extensie_nieuw = ". X_T"
Locatie = OpenDoc.GetPathName
Locatie_aangepast = Lewo(Locatie, Len(Lokatie) - 7)
retval = Dir$(Locatie_aangepast & Extensie_oud)
Naam = Dir$(Locatie)
Naam_aangepast = Lewo(Naam, Len(Naam) - 7)
Titel = OpenDoc.GetTitle
Titel = Lewo(Tytuł, (Len(Tytuł)))
    
Ustaw część = swApp.ActiveDoc

FilePath = Left(Locatie, InStrRev(Locatie, "\"))
FolderPath = ŚcieżkaPliku & "X_T PLIKI"

Jeśli Dir(FilePath, vbDirectory + vbHidden) <> "" Następnie
        If Dir(FolderPath, vbDirectory + vbHidden) = "" Then _
            MkDir Ścieżka_folderu
Zakończ jeżeli:

longstatus = Part.SaveAs3(Ścieżka Pliku & "PLIKI X_T\" & Naam_aangepast & Extensie_nieuw, 0, 0)

Koniec subwoofera

 

Fragment kodu pochodzi z: http://excel.developpez.com/faq/?page=FichiersDir#MkDir

Forum www.developpez.com to bardzo dobre forum, na którym można znaleźć wiele informacji i poważnych uczestników. Gorąco polecam.


sauvegarder_xt.swp

Właśnie przetestowałem makro, które umieściłeś, działa błędami i daje mi to:


sans_titre.jpg

Nie ma powodu, dla którego to nie miałoby działać! Jakie są błędy podczas testowania mojego kodu?

W ostatnim przykładzie wygląda na to, że nie masz otwartego pliku w SolidWorks.

 

1 polubienie

Masz otwarty pokój?

Okej rozwiązałem problem, znalazłem na forum:

"jest to w rzeczywistości dość powszechny błąd, ale jest związany z brakującym odniesieniem w projekcie VBA (zdarza się, jeśli wersje praca/dom są różne lub nie ma ich wcale)

Narzędzia>Referencje w edytorze VBE odznacz brakujące referencje i/lub zastąp je dostępnymi wersjami.

 

Ducou czy to działa!!!!!!!!!!!!

Dzięki chłopaki!

1 polubienie