Ouvrir boîte de dialogue "enregistrer sous" macro

Bonjour,

J'ai une macro dans Excel qui ouvre des pièces dans Solidworks à partir des liens des pièces dans mon fichier Excel. Cette macro modifie également des cotes dans les esquisses.

Je souhaite afficher la boîte de dialogue "Enregistrer sous" afin que l'utilisateur choisisse un nom et un emplacement pour les fichiers qui ont été modifiés.

J'ai le code suivant qui fonctionne dans Solidworks mais il ne marche pas quand je le colle dans Excel :

Sub main()

Set swApp = _
Application.SldWorks
Set swModel = swApp.ActiveDoc
swModel.Extension.RunCommand swCommands_SaveAs, Empty
End Sub

 

Quelq'un connaît-il la solution ?

Merci.

 

Bonjour,

C'est pas si simple qu'un copier coller pour prendre du code dans SolidWorks vers Excel !

Est-ce qu'il y a bien SolidWorks en référence coché dans le menu option de Visual Basic dans Excel ?

Il y a de nombreuses références disponibles contenant "Solidworks".

Seule "SldWorks 2012 Type Library" est cochée.

Je ne pense pas que cela vienne de là puisque ma macro exécute de nombreuses actions sur Solidworks à partir d'Excel sans problème.

Pour ce qui est du copier coller, je n'ai pas trouvé ce qu'il faut modifier pour passer d'un logiciel à l'autre et c'est pour cette raison que j'ai essayé cette méthode.

Bonjour, est-ce que je peux demander quel est le but final de l'opération?

Dans mon fichier excel j'ai un tableau avec les différentes valeurs pour les cotes des esquisses en fonction des configurations.

La macro modifie les pièces en fonction du fichier Excel. Je souhaite donc enregistrer sous un nouveau nom et dans un emplacement choisit par l'utilisateur la nouvelle pièce.

 

PS : je n'utilise pas de famille de pièce ici car, après essai, de nombreux bugs apparaissent à cause du nombre trop élevé de configurations (environ 2000).

Ok, je vous conseille de jeter un oeil à une technologie appelée DriveWorks alors.

DriveWorks est spécialiste de l'automatisation de conception SOLIDWORKS.

Nous proposons trois versions, DriveWorksXpress, DriveWorks Solo et DriveWorks Pro.

DriveWorksXpress est déjà installée dans votre version de SOLIDWORKS et est entièrement gratuite.

Solo et Pro proposent bien plus de fonctionnalités d'automatisation bien sûr.

http://www.driveworks.co.uk/products/driveworksxpress/ vous donne un aperçu d'Xpress (jetez un coup d'oeil aux différents onglets (Feature, Benefit, Compare).

http://www.driveworks.co.uk/products/driveworksxpress/sample-projects/ Des exemples que vous pouvez essayer vous-même.

Et une petite vidéo: https://www.youtube.com/watch?v=WCSO0mKsoxA

Pour finir, je vous conseillerai de contacter votre revendeur SolidWorks qui peut vous présenter plus en détail la technologie!

Je peux également répondre à vos questions si vous le souhaitez.

Thomas

1 « J'aime »

Je ne souhaite pas passer par DriveWorks car la macro existe déjà et est utilisée régulièrement.

Je voudrais donc la développer tout en conservant les opérations qu'elle effectue déjà.

Le code donné dans la question fonctionne finalement sous Excel mais n'exécute pas la bonne fonction. En effet, il ouvre la fenêtre "Ouvrir" de Solidworks au lieu de la fenêtre "Enregistrer sous"...

salut,

je pense que ce code fait ce que tu souhaite

Public Sub enregistrer_fichier()
    ' On récupére Solidworks
    Set swApp = GetObject(, "SldWorks.Application")
    ' On récupére le document actif dans solidworks
    Set swModel = swApp.ActiveDoc
    ' On ouvre la boite de dialogue d'enregistrement
    swModel.Save
    ' On ferme le fichier
    swApp.CloseDoc swModel.GetTitle
End Sub

 

1 « J'aime »

Francis Onsenofu,

Merci pour ta réponse. Le code fonctionne mais ne correspond pas à ce que je sougaite obtenir.

En effet, il enregistre le fichier modifié alors que j'aimerais enregistrer une copie dans un autre répertoire et sous un autre nom afin de garder le fichier de base sans modification.

J'ai essayé de remplacer le swModel.Save par swModel.SaveAs mais ça ne marche plus.

moi il ouvre la boite de dialogue
du coup tu peut modifier le nom de base

pour protéger ton fichier de base essaye peut etre de le passer en lecture seul
clic droit sur le fichier
propriété
cocher la case lecture seul

Pour le saveas il faut lui fournir en argument le chemin d'enregistrement ainsi que le nom du fichier
je ne pense pas que tu sache déjà ou il doit etre enregistrer et sous quel nom

de plus le saveas n'ouvrira pas la boite de dialogue d'enregistrement
a ce que j'ai compris

mais je peu me tromper
;)

Si je passe mes fichiers en lecture seule, la boîte de dialogue s'ouvre et je peux modifier toutes les données dont j'ai besoin.

Merci Francis Onsenfou !

1 « J'aime »