Erstellt eine zweite Solidworks-Instanz in vba

Hallo, ich muss einen Code aus Excel ausführen und ich möchte, dass dieser Code in einer Solidworks-Sitzung ausgeführt wird, die der Benutzer nicht sehen kann, und insbesondere, dass, wenn eine Solidworks-Sitzung bereits geöffnet ist, bevor sie nicht berührt wird und dass der Benutzer immer noch daran arbeiten kann, die Ausführungszeit des Codes

 

Im Moment verwende ich diesen Code, um Solidworks zu öffnen, aber es öffnet sich keine neue Instanz

    Dim swApp As SldWorks.SldWorks
    Set swApp = CreateObject("SldWorks.Application")

 

Hatte jemand den Fall, dass ich der einzige bin, der dieses Bedürfnis hat?

Hallo

Es ist nicht unbedingt ratsam, mehrere Solidworks Sitzungen auf demselben PC zu öffnen, dies kann zu Konflikten führen, beginnend mit der Meldung, die beim Start einer 2. Sitzung erscheint:

Herzliche Grüße

Hallo

Ich verwende das Standard-PDM, es startet eine Instanz von SW für die automatische Erstellung von PDFs validierter Zeichnungen.
Möglicherweise gibt es auf dieser Seite einige nützliche Informationen (siehe bei Visiativ)

2 „Gefällt mir“

Hallo

 

d.roger Es ist nun schon einige Jahre her, dass wir alle mit mehreren Instanzen von Solidworks gearbeitet haben, angesichts des Sets, das wir haben, ohne ein besonderes Problem zu verursachen

 

Todesco , leider hütet Visiativ diese Geheimnisse gut^^

1 „Gefällt mir“

Hallo

Wenn Solidworks nicht gestartet wird, dann erstellen Sie mit der Funktion "Objekt erstellen" ein neues Objekt, ansonsten bleiben Sie an dem Objekt hängen, das gestartet wird. Sie sollten in der Lage sein, die Funktion "Shellexecute" zu verwenden, um eine neue Instanz des Programms zu starten.

Herzliche Grüße

Hallo d.roger,

 

In der Tat ist es diese Spur, auf der ich im Moment stecken bleibe, kein Problem, eine neue Instanz mit Shell zu starten, aber auf der anderen Seite, mich an diese zu binden und nicht an die erste erstellte Instanz, ist es eine andere Geschichte  :/

Hallo

Diese andere Geschichte ist bereits geschrieben, aber in C#, schauen wir mal, ob es möglich ist, all dies in VBA zu übersetzen, und dort könnte es lustig sein, schauen Sie sich die validierte Antwort an, die hier ist, und dann für die Meldung  über die Protokolldatei beim Öffnen der zweiten Instanz müssen Sie HIER suchen. Und immer noch in C#, wenn Sie den Start der zweiten Instanz von Solidworks nicht sehen möchten,  müssen Sie "StartInfo.Arguments = "-m"" in die Eigenschaften einfügen, um sie an die "Start"-Methode der Instanz der Klasse "Process" zu übergeben.

Ich habe getestet (in C #), mit Ausnahme der Protokolldatei-Nachricht, und es funktioniert ziemlich gut ...

[BEARBEITEN]

Nach dem Testen funktioniert die vorgeschlagene Lösung für die Protokolldatei-Meldung auch sehr gut. Sie müssen also nur von den 2 vorgeschlagenen Links die Übersetzung von C# nach VBA durchführen und die Änderung vornehmen, um den Start und das Fenster dieser neuen Instanz von Solidworks unsichtbar zu machen. Und natürlich müssen Sie darüber nachdenken, alle Ressourcen freizugeben und diese Instanz von Solidworks am Ende Ihres Makros zu schließen, sonst wird der Prozess weiter ausgeführt.

[ENDE BEARBEITUNG]

Herzliche Grüße

3 „Gefällt mir“

Vielen Dank für dieses vollständige Feedback, d.roger, ich muss nur alles in VB konvertieren und dass ich das C # verstehe, übrigens werde ich den VB-Code nach der Konvertierung für diejenigen veröffentlichen, die interessiert sein könnten

Hallo

Ich habe ein SolidWorks Makro (nicht aus Excel) und ich habe die Möglichkeit, eine andere Instanz zu öffnen, indem ich direkt in den Installationsordner gehe mit:

Shell "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe"

 

Es liegt an Ihnen zu sehen, ob Sie es an Ihre Bedürfnisse anpassen können

 Hallo rpicard

 

In der Tat funktioniert es gut, ich hatte mich am Anfang auf diesen Weg begeben , das Problem ist, dass ich mich nicht an die neu erstellte Instanz anhängen konnte und nicht an die erste Instanz.

 

Aber ich bleibe :)

Hallo

Ja, es gibt mehrere Möglichkeiten, eine zweite Instanz von Solidworks zu starten:

Dim objShell As Object
Set objShell = CreateObject("shell.application")
objShell.ShellExecute "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", "", "", "open", vbNormalFocus
Set objShell = Nothing

Oder:

Shell "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus

Das Hauptanliegen besteht jedoch darin, diese zweite Instanz von Solidworks anzuhängen und zu verwalten, ohne den Benutzer zu stören, der an der ersten Instanz von Solidworks arbeitet. Ich sehe jedoch das zweite Problem kommen, das darin bestehen kann, dass, wenn der Benutzer eine Solidworks-Datei durch Doppelklick darauf öffnet, die Datei in dieser zweiten Instanz von Solidworks geöffnet wird, anstatt in der ersten Instanz zu öffnen.

Herzliche Grüße