Crée une seconde instance Solidworks en vba

Bonjour j'ai à exécuter un code a partir de excel et je souhaiterait qu'il exécute ce code sur session de solidworks que l'utilisateur ne peu voir et surtout que si une session de solidworks est déjà ouverte avant il n'y touche pas et que l'utilisateur puisse toujours travailler dessus le temps d'execution du code

 

a l'heure actuelle j'utilise ce code pour ouvrir Solidworks mais cela ne m'ouvre pas de nouvelle instance

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

 

Personne n'a eu le cas ou je suis le seul a avoir ce besoin ?

Bonjour,

Il n'est pas forcément conseillé d'ouvrir plusieurs sessions de Solidworks sur un même PC, cela peut engendrer des conflits, à commencer par le message qui apparaît lors du lancement d'une 2ème session :

Cordialement,

Bonjour

J'utilise le PDM standard,il lance une instance de SW pour la création automatique des PDF des mise en plan validées.
Y'a peut-être des infos utiles de ce coté (Voir chez Visiativ)

2 « J'aime »

Bonjour

 

d.roger cela fait maintenant plusieurs années que l'on tourne tous avec plusieur instance de Solidworks au vue des ensemble que nous avons sans posé de probleme particuliers

 

Todesco malheureusement Visiativ garde bien ces secrets ^^

1 « J'aime »

Bonjour,

Si Solidworks n'est pas démarré alors avec la fonction "CreateObject" tu créer un nouvel objet sinon tu te raccroche à l'objet qui est démarré. Tu dois pouvoir utiliser la fonction "Shellexecute" pour démarrer une nouvelle instance du programme.

Cordialement,

Bonjour d.roger,

 

En effet c'est sur cet piste la que je m'enage en ce moment aucun soucis pour démarre une nouvelle instance avec shell mais par contre pour me rattacher a celle ci et non à la premiere instance crée c'est une autre histoire  :/

Bonjour,

Cette autre histoire est déjà écrite mais en C#, à voir si c'est possible de traduire tout ça en vba et c'est plutôt là que ça risque d'être drôle, regarde la réponse validée qui se trouve ICI, et puis pour le message  concernant le fichier journal à l'ouverture de la deuxième instance il faut regarder ICI. Et, toujours en C#,  si tu ne veux pas voir le démarrage de la deuxième instance de Solidworks alors il faut mettre "StartInfo.Arguments = "-m"" dans les propriétés à passer à la méthode "Start" de l'instance de la classe "Process".

J'ai testé (en C#), sauf pour le message du fichier journal, et ça marche plutôt bien ...

[EDIT]

Après test, la solution proposée pour le message du fichier journal fonctionne aussi très bien. Tu as donc juste à partir des 2 liens proposés de la traduction de C# vers VBA à faire et la modification pour rendre le démarrage et la fenêtre de cette nouvelle instance de Solidworks invisible. Et bien sûr, il faut penser à libérer toutes les ressources et fermer cette instance de Solidworks à la fin de ta macro sinon le processus continue de tourner.

[FIN EDIT]

Cordialement,

3 « J'aime »

Merci pour ce retour complet d.roger il me reste plus qu'a tout convertir en VB et que je comprenne le C# au passage je posterais le code VB une fois convertir pour ceux que sa pourrait intéressé

Salut,

J'ai une macro SolidWorks (pas depuis Excel) et j'ai la possibilité d'ouvrir une autre instance en allant chercher directement dans le dossier d'installation avec :

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

 

A toi de voir si tu peux l'adapter à tes besoins

Bonjour rpicard

 

En effet cela fonctionne bien j'etait parti sur cet piste au départ le soucis c'est que je n'arrivait pas a me rattacher a l'instance nouvellement crée et non a la premier instance.

 

Mais je garde :)

Bonjour,

Oui il existe plusieurs façon de lancer une deuxième instance de Solidworks :

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

Ou :

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

Mais le souci premier est bien de se rattacher et piloter cette deuxième instance de Solidworks sans perturber l'utilisateur qui travaille sur la première instance de Solidworks. Je vois cependant venir le deuxième souci qui risque d'être que si l'utilisateur ouvre un fichier Solidworks par double clic sur celui-ci, le fichier va s'ouvrir dans cette deuxième instance de Solidworks au lieu de s'ouvrir dans la première instance.

Cordialement,