Interfejs API RunCommand umożliwia uruchamianie poleceń oprogramowania, ale nie można uzyskać żadnych informacji zwrotnych. to tak, jakby ręcznie kliknąć przycisk w SW
Dlaczego nie uruchomisz samodzielnie okna dialogowego zapisywania jako, a następnie nie użyjesz interfejsu API metody Zapisz jako (IModelDocExtension) w celu wyeksportowania pliku.
Za mało znam VBA, więc tak naprawdę nie widzę, jak samodzielnie uruchomić ten dialog, a patrząc na pomoc SW API, nie jestem ani trochę bardziej zaawansowany.
Będę musiał dowiedzieć się trochę więcej o metodzie, którą należy zastosować.
Jak patrzę w pomoc SW to nie ma zbyt wiele :http://help.solidworks.com/SearchEx.aspx?q=dialog+box+vba&sort=&version=2018&lang=English&prod=api&context=LANG%3den%26NRESULTS%3d25
Jak powiedział prossignol, musisz użyć interfejsu API metody SaveAs (IModelDocExtension), aby wyeksportować swój plik. W przypadku okna dialogowego możesz po prostu utworzyć msgBox z wyborem i przetworzyć, co należy zrobić zgodnie z opinią użytkownika. Oto przykład tego, co można zrobić w makrze w akcji dotyczącej pomieszczenia
ElseIf (swModel.GetType = swDocPART) Then
swModel.SetTitle2 "$PRP:SW-File Name"
Dim namePRT As String
Dim chemin As String
chemin = "D:\Etude\Commerce\"
namePRT = chemin & swModel.GetTitle & ".sldprt"
If MsgBox("Voulez-vous sauvegarder cette pièce ?", vbYesNo, "Enregistrement") = vbYes Then
swModel.SaveAs namePRT
End If
End If
Dziękuję za te odpowiedzi, ale chcę, aby okno z eksploratorem Windows było otwarte, ponieważ w tym folderze "Handel" znajduje się struktura drzewa do przechowywania komponentów.
Przepraszam, ale w tej chwili nie widzę lepszej odpowiedzi....
W takim przypadku możliwe jest otwarcie "eksploratora" bez korzystania z okna dialogowego oprogramowania. Jest to coś bardziej ogólnego i pozwala poruszać się po drzewie.
Możesz również użyć elementu BrowserForFolder, aby umożliwić użytkownikowi wybranie folderu docelowego:
ElseIf (swModel.GetType = swDocPART) Then swModel.SetTitle2 "$PRP:SW-File Name"
Dim namePRT As String
Dim chemin As String
chemin = "D:\Etude\Commerce\"
If MsgBox("Voulez-vous sauvegarder cette pièce ?", vbYesNo, "Enregistrement") = vbYes Then
Dim objShell As Shell
Dim ssfWINDOWS As Long
Dim objFolder As Folder
Set objShell = New Shell
Set objFolder = objShell.BrowseForFolder(0, "SelectDossiers", 0, chemin)
If (Not objFolder Is Nothing) Then
namePRT = objFolder & "\" & swModel.GetTitle & ".sldprt"
swModel.SaveAs namePRT
End If
End If
End If
Bądź ostrożny, musisz umieścić "Microsoft Shell Controls And Automation" w odwołaniach do projektu.