Wie kommen Sie aus der Makroökonomie heraus?

Hallo

Wie gehen Sie bei einem Makro, mit dem Sie Importdateien speichern können, damit um, ob der Benutzer im Fenster "Speichern unter" auf die Schaltfläche "Abbrechen" klickt?

Details zum Makro:

Sub main()

.....

        swApp.SetCurrentWorkingDirectory "D:\Studies\Commerce" 'Pfad
        swApp.RunCommand SwCommands.swCommands_SaveAs, ""

Wenn der Benutzer auf die Schaltfläche "Abbrechen" klickt, dann verlässt er das Sub auch nicht und setzt das Makro nicht fort.

...

Ende Sub

Vielen Dank im Voraus für die Ratschläge und Antworten
 

Hallo 

Mit der RunCommand-API können Sie SW-Befehle ausführen, aber Sie können kein Feedback erhalten. Es ist, als würde man in SW manuell auf die Schaltfläche klicken

Führen Sie nicht selbst ein Dialogfeld zum Speichern unter aus, und verwenden Sie dann die SaveAs-Methoden-API (IModelDocExtension), um die Datei zu exportieren.

A+

Philippe 

Vielen Dank für die Antwort...

Mir fehlen VBA-Kenntnisse, um alles zu verstehen, was Sie mir raten, aber ich werde es mir genauer ansehen.

A+

Nicht genügend Kenntnisse in VBA, daher sehe ich nicht wirklich, wie ich diesen Dialog selbst starten kann, und wenn ich mir die SW-API-Hilfe ansehe, bin ich nicht fortgeschrittener.

Ich muss ein wenig mehr über die zu befolgende Methode wissen.

Vielen Dank.

Hallo

Poste deinen Code.

Hier ist der Code in einer txt-Datei.


save_import.txt

Hallo

@ prossignol :

Wie soll das Dialogfeld gestartet werden?

Wenn ich in der Hilfe von SW nachschaue, gibt es nicht viel: http://help.solidworks.com/SearchEx.aspx?q=dialog+box+vba&sort=&version=2018&lang=English&prod=api&context=LANG%3den%26NRESULTS%3d25

Hallo

Wie prossignol sagte, müssen Sie die SaveAs-Methoden-API (IModelDocExtension) verwenden, um Ihre Datei zu exportieren. Für das Dialogfeld können Sie einfach eine msgBox mit Auswahl erstellen und entsprechend dem Feedback des Benutzers verarbeiten, was zu tun ist. Hier ist ein Beispiel dafür, was Sie in Ihrem Makro in der Aktion für einen Raum tun können

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

Unter dem Link: https://www.excel-pratique.com/fr/vba/boites_de_dialogue.php finden Sie weitere Informationen zu den Möglichkeiten von VBA-Dialogen.

Herzliche Grüße

1 „Gefällt mir“

Hallo

Vielen Dank für diese Antworten, aber ich möchte das Fenster mit dem Windows Explorer offen halten, da es in diesem Ordner "Commerce" eine Baumstruktur gibt, um die Komponenten zu speichern.

Tut mir leid, aber im Moment sehe ich keine bessere Antwort...

Herzliche Grüße.

Hallo

In diesem Fall ist es möglich, einen "Explorer" zu öffnen, ohne das SW-Dialogfenster zu verwenden. Es ist etwas Allgemeineres und ermöglicht es Ihnen, durch den Baum zu navigieren.

Hallo

In diesem Fall nehme ich den Code-Schnipsel, denn selbst wenn ich es geschafft habe, mit msgbox eine Lösung zu finden, würde mir eine generische Lösung gut passen....

Herzliche Grüße.

Hallo

Sie können auch BrowserForFolder verwenden, um dem Benutzer die Auswahl des Zielordners zu ermöglichen:

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

 

Seien Sie vorsichtig, Sie müssen "Microsoft Shell Controls And Automation" in die Projektreferenzen einfügen.

Herzliche Grüße

1 „Gefällt mir“