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