VBA Excel zum Duplizieren eines Teils und seines Plans + Umbenennen

Hallo

Ich möchte einen Raum und seinen Plan aus einer Excel-Datei öffnen, diesen Raum unter einem neuen Namen "Speichern unter" speichern und den Plan in Bezug auf die Referenz auf den neuesten Stand bringen, bevor ich ihn wiederum speichere.

Ich kann meine Dateien gleichzeitig öffnen und unter einem neuen Namen speichern. Aber der Schuss zeigt immer auf den anderen Raum.

Im manuellen Modus funktioniert es jedoch. Es sieht so aus, als ob der Datensatz nicht unter speichert, sondern eine Kopie.

Ich öffne mit dieser Methode:

Set swModel = swApp.OpenDoc6("Link zu meinem Plan", 3, 0, "", myError, myWarning)  

Und ich nehme damit auf:

 swModel.SaveAs2 "neuer Link", 0, Wahr, Falsch

 

PS: Und übrigens, wenn jemand einen Trick hat, um gleichzeitig die Eigenschaft Part Designation zu ändern, würde mir das sehr helfen.

Hier ist ein Beispiel, das ich verwende, um eine Kopie des Teils/der Baugruppe und der  verknüpften Ebene aus einem geöffneten Teil oder einer offenen Baugruppe zu erstellen, um ihr einen Hinweis hinzuzufügen.

Zu diesem Zweck rufe ich die index-Eigenschaft des geöffneten Teils/der geöffneten Baugruppe ab und ändere eine andere, die index-Eigenschaft des neuen Teils/der neuen Baugruppe

Mit ein wenig Modifikation sollten Sie in der Lage sein, all dies zu ändern, um das zu tun, was Sie brauchen.

Und Sie sollten ganz gut verstehen, es ist mein 1. Makro, ziemlich wichtig, also habe ich viele Kommentare geschrieben!

Auf der anderen Seite wird es aus SolidWorks gestartet. Es liegt an Ihnen, es anzupassen!

 


addingindex.swp
1 „Gefällt mir“

Hallo

Es ist alles im sbadenis-Makro (also +1 dafür), insbesondere in der ReplaceReferencedDocument-Funktion. Zum Beispiel:

Option Explicit

Const sReferencingDoc As String = "C:\Users\XXX\Desktop\Temp\Pièce5.SLDDRW"
Const sOldDoc As String = "C:\Users\XXX\Desktop\Temp\Pièce5.sldprt"
Const sNewDoc As String = "C:\Users\XXX\Desktop\Temp\Pièce1.sldprt"

Sub main()

    Dim swApp As SldWorks.SldWorks
    Dim bRet As Boolean

    Set swApp = CreateObject("SldWorks.Application")

    bRet = swApp.ReplaceReferencedDocument(sReferencingDoc, sOldDoc, sNewDoc)
    
End Sub

Zu verwenden, ohne eines der Dokumente in Solidworks zu öffnen!!

In Ihrer Zeile "swModel.SaveAs2 "neuer Link", 0, True, False", das "True" bedeutet "SaveAsCopy" = yes ... aber Sie benötigen diese Zeile nicht mehr, wenn Sie die Funktion ReplaceReferenceDocument verwenden...

Herzliche Grüße

1 „Gefällt mir“

Vielen Dank für Ihre Antworten, in der Tat reichte es aus, das Wahr durch Falsch zu ersetzen, um meinen Bedarf zu decken.

 

Zu Ihrer Information: Ich programmiere aus Excel und habe den Eindruck, dass einige Dinge nicht gleich funktionieren. Wie die Zeilen mit bRet, ich habe schon einige mit dem Besitzerwechsel gesehen, aber es funktioniert nicht auf Excel, während es auf Solid ja funktioniert.

Hallo

Ich habe noch einen Fehler zu korrigieren. Lassen Sie mich das erklären:

Ich habe eine Assembly "A", die eine Assembly "B" enthält.

"A" und "B" enthalten einen "C"-Teil.

Wenn ich Teil C durch ein Teil D in Baugruppe A ersetze, wird auch das Teil in Baugruppe B ersetzt (das ist das Ziel).

Zum Schluss speichere ich meine Baugruppe A. Ich stelle jedoch fest, dass zur gleichen Zeit die Baugruppe B registriert wurde.

Aber das will ich nicht tun. Allerdings habe ich 0 als Backup-Option gesetzt, aber ich stelle fest, dass wir theoretisch angeben sollten, die Referenzen mit swSaveAsOptions_SaveReferenced zu speichern, aber wie kann man es zwingen, sie nicht zu speichern?

Hallo

Ich sehe nicht wirklich einen Sinn darin, Ihr Teil C durch ein Teil D in Ihrer Baugruppe B zu ersetzen, wenn Sie diese Baugruppe B nicht speichern möchten, können Sie genauso gut Teil C durch Ihr Teil D nur in Ihrer Baugruppe A ersetzen und Ihre Baugruppe B mit Ihrem Teil C behalten ...

Herzliche Grüße

In der Tat ist das nicht genau das, was passiert, aber ich wollte das Problem einfacher erklären.

Im Grunde möchte ich nur meine Baugruppe retten können und nicht die Kinder.

Hallo

Die SaveAs2-Funktion entspricht Ihren Anforderungen, aber Sie sollten nicht 0 in die Speicheroptionen setzen, es ist keine gültige Option, Sie müssen die getroffenen Entscheidungen addieren, zum Beispiel:

1 + 2 für swSaveAsOptions_Silent und swSaveAsOptions_Copy

1 + 512 für swSaveAsOptions_Silent und swSaveAsOptions_CopyAndOpen

...

Herzliche Grüße