Ouverture fichier depuis Excel

j'essai d'ouvrir un fichier SW depuis une macro excel.

j'utilise le code suivant :

Dim swApp       As SldWorks.SldWorks
Dim swModel     As SldWorks.ModelDoc2
Dim retval      As String
Dim xlApp       As Excel.Application
Dim xlWB        As Excel.Workbook
Dim exSheet     As Excel.Worksheet
Dim i           As Integer
Dim bool        As Boolean
Dim boolstatus  As Boolean
Dim myBool As Boolean
Dim myError As Long, myWarning As Long

Sub Bouton1_Cliquer()
 
myBool = Shell("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe ", vbNormalFocus)
 
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.OpenDoc("C:\Users\nouveau\Documents\mapiece.SLDPRT", swDocPART)
Set swApp = Nothing: Set swModel = Nothing
 
End Sub

L'ouverture de SW se fait bien, mais le fichier mapiece.sldprt ne s'ouvre pas. Pas de message d'erreur.

J'utilise SW 2015.

Sauriez vous me dire ce qui cloche?

Bonjour;

Votre demande et le code attaché me laisse perplexe.
Que voulez-vous faire exactement ?
Ouvrir un document spécifique avec une macro depuis Solidworks(API Solidworks)?
ou
Utiliser Excel pour ouvrir un document à partir d'une liste (via un bouton Macro? ?
....
Dans les deux cas : préférez la commande Opendoc6("Emplacement et Nom du fichier à ouvrir",swdocpart,swOpenDocOptions_Silent,"")
un exemple ici : https://help.solidworks.com/2015//Open_Document_Example_VB.htm?verRedirect=1
Et les informations de la commande ici :https://help.solidworks.com/2015/opendoc6.html

Cordialement

1 « J'aime »

J'essai d'ouvrir un document Solidworks depuis un bouton dans un fichier Excel

J'ai aussi essayé le fonction "opendoc6", sans succès.

Set swModel = swApp.OpenDoc6("C:\Users\nouveau\Documents\mapiece.SLDPRT", 2, 1, "", myError, myWarning)

Cela viendrait-il des option que j'ai du mal  à définir? Ici, mode ReadOnly. J'aimerais idéalement ouvrir en mode ReadOnly ET Silent.

Pour ma part j'ai ce code à adapter (pièce 5, Pièce 6 et MEP pièce  sont à remplacer par ton besoin) . Testé et approuvé

Sub EssaiSW()

 Dim swApp As SldWorks.SldWorks
    Dim swModelUn As SldWorks.ModelDoc2
    Dim swModelDeux As SldWorks.ModelDoc2

    If swApp Is Nothing Then
        Set swApp = CreateObject("SLDWORKS.application")
        swApp.Visible = True
    Else
        Set swApp = Application.SldWorks
        MsgBox "Ouverture de Solidworks par Excel=Ok"
    End If

    Set swDocSpecification = swApp.GetOpenDocSpec("C:\Users\sebastien.denis\Desktop\Pièce5.sldprt")
    Set swModelUn = swApp.OpenDoc7(swDocSpecification)
    MsgBox swModelUn.GetTitle
    
    Set swDocSpecification = swApp.GetOpenDocSpec("C:\Users\sebastien.denis\Desktop\Pièce5.slddrw")
    Set swModelUn = swApp.OpenDoc7(swDocSpecification)
    MsgBox swModelUn.GetTitle
    
    swApp.CloseDoc swModelUn.GetTitle
    
    Set swModelUn = swApp.ActiveDoc
    MsgBox swModelUn.GetTitle
    
    'Set swDocSpecification = swApp.GetOpenDocSpec("C:\Users\sebastien.denis\Desktop\Pièce6.sldprt")
    'Set swModelDeux = swApp.OpenDoc7(swDocSpecification)
    
    'swApp.CloseDoc swModelUn.GetTitle

    'MsgBox swModelDeux.GetTitle
    
    'swApp.CloseDoc swModelDeux.GetTitle
    
    
End Sub

.

1 « J'aime »

Super, ça fonctionne.

Je continue mon code ;)