IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Exécuter une macro sur SolidWorks depuis Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2018
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2018
    Messages : 51
    Par défaut Exécuter une macro sur SolidWorks depuis Excel
    Bonjour,

    Je souhaite enregistrer des fichiers de plans ".SLDDRW" (SolidWorks) sous une autre extension et de façon automatisé (VBA)

    Actuellement, j'ouvre mes plans 1 à 1 sur SolidWorks et je lance une macro qui enregistre sous le format voulu ".DXF"

    Parallèlement à ça, j'ai un fichier excel dans lequel j'ai une colonne A avec le n° de plans et une colonne B avec le chemin. J'ai une macro sous excel qui ouvre les plans 1 à 1 automatiquement. => ça marche bien.

    J'aimerai qu'en plus d'ouvrir les plans 1 à 1, elle exécute la macro sous SolidWorks pour enregistrer les plans au format ".DXF"


    Es-ce possible?
    La méthode n'est peut-être pas la bonne?
    Avez-vous une meilleur idée?

    La finalité étant d'enregistrer des fichiers ".SLDDRW" d'une liste excel au format ".DXF"

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Private Sub CommandButtonOKdxf_Click()
     
     
     
     Dim cpt As Integer
     
     For cpt = 4 To 20
     
     
     NoLigneDRW = cpt
        Dim FichierSLDDRW As String
        Dim CheminFichierDRW As String
     
     
        CheminFichierDRW = Range("B" & NoLigneDRW).Value
        FichierSLDDRW = Range("A" & NoLigneDRW).Value
     
        If Range("D" & NoLigneDRW).Value <> "" Then
            ThisWorkbook.FollowHyperlink CheminFichierDRW & "\" & FichierSLDDRW & ".SLDDRW"       'Ouverture du plan .SLDDRW sous SolidWorks
        End If
     
      '++++++++ comment exécuter une macro dans solidWorks++++
     
     '------ci dessous la macro qui marche seule dans SolidWorks mais j'aimerai qu'elle s’exécute automatiquement a chaque ouverture de fichier
    'Dim swApp As Object
     
    'Dim Part As Object
    'Dim boolstatus As Boolean
    'Dim longstatus As Long, longwarnings As Long
     
    'Sub main()
     
    'Set swApp = Application.SldWorks
     
    'Set Part = swApp.ActiveDoc
     
    'PathName = UCase(Part.GetPathName)
     
    'longstatus = Part.SaveAs3(Replace(PathName, "SLDDRW", "DXF"), 0, 0)
    'longstatus = Part.SaveAs3(Replace(PathName, "SLDDRW", "SLDDRW"), 0, 0)
     
    'End Sub
     
     
     
    Next cpt
     
    Unload UserFormTraiterDXF
     
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    C'est certainement possible et la méthode semble correcte (à moins qu'il existe dans SolidWork la possibilité de faire des conversion de masse).

    Le problème c'est que pour enregistrer en DXF, il faut manipuler des objets SolidWork et que, ici, on parle plutôt des objets Excel.
    Non pas que ce soit gênant que tu poses cette question, mais ici tu trouveras peu de spécialistes de SolidWorks pouvant t'apporter une réponse.

    Il faudrait que tu trouves de la documentation sur les objets SolidWorks et leurs membres pour avoir une change de savoir quoi faire.
    Ou, à défaut, tâtonner dans les objets que permet d'afficher la touche F2 (en sélectionnant la bibliothèque SolidWorks). C'est compliqué et incertain mais, avec un peu de chance, ça peut marcher (il m'est arrivé, il y a longtemps, de faire deux ou trois bricoles avec Inventor en utilisant cette méthode).

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Essaye de voir s'il n'y aurait pas des infos ici : http://www.solidworks.com/sw/support/api-support.htm

    Sinon, il te reste la base de données Dassault Systèmes mais, perso, je n'y ai pas accès.
    https://login.solidworks.com/nidp/id...ic%26lang%3DFR

  4. #4
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2018
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2018
    Messages : 51
    Par défaut
    Bonjour,

    Oui il y a des solution qui existe sous SolidWorks, mais les options sont limitées, et dans mon cas précis c'est le fait de traiter la liste sous excel qui m’intéresse.
    Je ne trouve pas mon bonheur avec F2.
    Je pensais que depuis excel il était possible d'appeler la macro existante sous SolidWorks.
    Je sais qu'on peut lancer un module d'un autre classeur fermé, alors pourquoi pas d'un autre programme?

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par WalTT Voir le message
    Je pensais que depuis excel il était possible d'appeler la macro existante sous SolidWorks.
    Si c'est vraiment une macro, tu pourras l'appeler avec un simple Call en la rapatriant dans le VBE d'Excel.
    Par contre, si c'est une commande, il faudra manipuler les méthodes des objets concernés.

    Je sais qu'on peut lancer un module d'un autre classeur fermé, alors pourquoi pas d'un autre programme?
    Activer une macro d'un classeur fermé ? Je ne dis pas que c'est impossible mais j'en doute fortement dans la mesure où, à ma connaissance, il n'est pas possible de lire les données d'un fichier fermé, quelle que soit la nature de ce fichier.

  6. #6
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2018
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2018
    Messages : 51
    Par défaut
    Bonjour,

    Suivant ton conseil d'utiliser "call" pour appeler la macro j'ai donc essayé le code ci-dessous:




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub CommandButtonOKdxf_Click()
     
     
     Dim cpt As Integer
     
     For cpt = 4 To 200
     
     
     NoLigneDRW = cpt
        Dim FichierSLDDRW As String
        Dim CheminFichierDRW As String
     
     
     
        CheminFichierDRW = Range("B" & NoLigneDRW).Value
        FichierSLDDRW = Range("A" & NoLigneDRW).Value
     
     If Range("D" & NoLigneDRW).Value <> "" Then
     
     ThisWorkbook.FollowHyperlink CheminFichierDRW & "\" & FichierSLDDRW & ".SLDDRW"   'Ouverture sous SolidWorks
     
     Call DXF
     
     End If
     
    Next cpt

    Ci dessous la macro que j'ai placé dans un module Excel pour essayer de la lancer. Sous excel ça ne marche pas, err 438 à la ligne "Set swApp = Application.SldWorks"
    Pour rappel cette macro tourne bien seul sous SolidWorks mais je cherche à ce qu'elle soit lancée depuis Excel.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub DXF()
     
    Set swApp = Application.SldWorks
     
    Set Part = swApp.ActiveDoc
     
    PathName = UCase(Part.GetPathName)
     
    longstatus = Part.SaveAs3(Replace(PathName, "SLDDRW", "DXF"), 0, 0)
    longstatus = Part.SaveAs3(Replace(PathName, "SLDDRW", "SLDDRW"), 0, 0)
     
    End Sub

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Est-ce que tu as chargé la bibliothèque d'objets SolidWorks ?
    Dans le VBE > Outils > Références > Cocher la bibliothèque d'objets SolidWork dans la liste déroulante.
    Comme je ne dispose pas de ce logiciel, je ne peux pas te dire quel est son nom.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/04/2016, 15h44
  2. [XL-2003] Exécuter une macro sur 2 fichiers excel en même temps..
    Par visto94 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/07/2010, 14h09
  3. [XL-2003] Exécuter une macro sur tous les fichiers d'un dossier.
    Par ahmet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/10/2009, 09h49
  4. Réponses: 4
    Dernier message: 05/07/2009, 16h38
  5. Exécuter une macro de VB a Excel
    Par OsTaLaKaR dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/06/2009, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo