Jak wyjść z makro?

Witam

Jak w makrze, które umożliwia zapisywanie importowanych plików, zarządzasz tym, czy użytkownik kliknie przycisk "Anuluj" w oknie "Zapisz jako"?

Szczegóły makr:

Sub main()

.....

        swApp.SetCurrentWorkingDirectory "D:\Studies\Commerce" 'ścieżka
        swApp.RunCommand SwCommands.swCommands_SaveAs, ""

Jeśli przycisk "Anuluj" zostanie kliknięty przez użytkownika, wyjdź z sub również nie kontynuuj makra.

...

Koniec sub

Z góry dziękuję za rady i odpowiedzi
 

Witam 

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.

Klasa A+

Philippe 

Dziękuję za odpowiedź...

Brakuje mi umiejętności VBA, aby zrozumieć wszystko, co mi radzisz, ale przyjrzę się temu bliżej.

Klasa A+

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ć.

Dziękuję.

Witam

Opublikuj swój kod.

Oto kod w pliku txt.


save_import.txt

Witam

@ prossignol :

W jaki sposób należy uruchomić okno dialogowe?

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

Witam

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

Pod linkiem znajdziesz : https://www.excel-pratique.com/fr/vba/boites_de_dialogue.php więcej informacji na temat możliwości okien dialogowych VBA.

Pozdrowienia

1 polubienie

Witam

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....

Pozdrowienia.

Witam

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.

Witam

W tym przypadku biorę fragment kodu, bo nawet gdyby udało mi się znaleźć rozwiązanie za pomocą msgbox, ogólne rozwiązanie by mi odpowiadało....

Pozdrowienia.

Witam

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.

Pozdrowienia

1 polubienie