Script pour tâche EPDM

Bonjour, j’ai créé une nouvelle tâche dans EPDM « nouveau projet à programmer »

Et j’aimerais Quand je fais clique droit sur l’assemblage ou sur la pièce concerner et que je clique sur ma tâche :
image

ça m’ouvre la fenêtre Nouveau message de la boite au lettre d’EPDM, (comme si je faisais clique droit → notifier → un collègue)

et que ça remplisse : Envoyer A : « Programmation » automatiquement.
dans le Sujet remplir : Nouveau projet à programmer & « mettre le nom automatiquement du fichier ou j’ai fait clique droit »

et dans le message mettre un message et l’emplacement du fichier ou j’ai fait clique droit.

Pour qu’il ne reste plus qu’à cliquer sur envoyer à l’utilisateur au personnes concernés et ajouter un commentaire supplémentaire s’il le souhaite.

Est-ce que c’est possible et si oui, est-ce que quelqu’un aurait une idée du script qu’il faudrait que je mette dans ma tâche ?

Bonjour,

Je n’ai pas trouvé les arguments pour paramétrer l’outil de messagerie interne de Solidworks PDM pour obtenir le résultat souhaité.
Autre option, passer par Outlook : Using dispatch to send outlook messages by data card variable

1 « J'aime »

Bonjour,
je viens de réussir avec ce code dans le script de la tâche :

Dim swApp As Object
Dim oOutlook As Object
Dim oMailItem As Object
Dim Body As Variant
Dim sTmp As String, SigString As String
Dim Signature As String
Dim strbody As String

Sub main()

    Set swApp = Application.SldWorks

    PreparerOutlook oOutlook
    Set oMailItem = oOutlook.CreateItem(0) ' 0 = olMailItem

    strbody = "<font size=3>" _
            & "Bonjour,<br>" _
            & "Voici un nouveau projet à programmer.<br>" _
            & "<br>" _
            & "Cordialement,"

    With oMailItem
        .Display
        .To = "mail@mail.fr"
        .Subject = "Nouveau projet à programmer"
        .HTMLBody = strbody & .HTMLBody
    End With

End Sub

Private Sub PreparerOutlook(ByRef oOutlook As Object)
    On Error Resume Next
    Set oOutlook = GetObject(, "Outlook.Application")
    If (Err.Number <> 0) Then
        Err.Clear
        Set oOutlook = CreateObject("Outlook.Application")
        If (Err.Number <> 0) Then
            MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
            Exit Sub
        End If
    End If
End Sub

Est-ce que vous seriez comment je peux récupérer le nom du fichier ou dossier maintenant quand je fais clique droit dessus et que j’exécute la tâche ?
Et aussi récupérer le chemin complet de ce ficher ou dossier
que je puisse inclure les deux dans mon mail ?

Bonjour,

Faut rester dans la logique VBA de SW du coup et réutiliser les fonctions type GetPathname etc.
Je pense qu’il aurait été plus simple de passer par Dispatch qui permet de récupérer les informations des fichiers sélectionnés dans le coffre et de mapper tout ça (moins de manipulation de VBA par rapport à une tâche)

1 « J'aime »

Est-ce que tu aurais des exemples ? je suis perdu…

Pour disptach?
Dans le lien que j’ai mis dans ma première réponse il y a une bonne partie.

1 « J'aime »

de ce que j’ai compris :

j’ai mis les deux fichier ici : F:\PDM\Admin\Dispatch

le fichier tasks_email.bat est vierge (mais ce rempli bien comme le fichier .txt quand je lance le dispatch)

le fichier email_template.txt contient :
« C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE » /c ipm.note /m « monmail@mail.fr?subject=Nouveau projet a programmer&body=Bonjour, voici un nouveau projet à programmer : »

J’ai mis dans Générer le fichier de paramètres :

Modèle : F:\PDM\Admin\Dispatch\email_template.txt
Nom de : F:\PDM\Admin\Dispatch\tasks_email.bat

j’ai mis dans exécuter shell :

Open C:\Windows\system32\Cmd.exe /c F:\PDM\Admin\Dispatch\tasks_email.bat

mais il doit y avoir un bug quand je met ça il rajoute des truc en double quand je valide (voir image)

mais rien ne ce passe… du au bug du shell je pense ?

c’est bon j’ai trouvé, il ne fallait pas écrire le open.

Comment je peux faire pour faire des saut de ligne dans mon body ?

et comment faire car dans le chemin du fichier j’ai des accent sur les e par exemple et du coup ça les transforme quand ça écrit le mail ?

C’est du HTML donc je suppose ainsi par exemple:

"<html><p><font style=""font-family: Arial; font-size: 10pt;"">" & "Bonjour," & "<br /><br />"

"C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE" /c ipm.note /m "monmail@mail.fr?subject=Nouveau projet a programmer&body=<html><p><font style=""font-family: Arial; font-size: 10pt;"">Bonjour,<br /><br />Voici un nouveau projet à programmer : </font></p></html>"

j’ai mis ça mais il me dit que l’argument de la ligne de commande n’est pas valide

Je ne pense pas en argument. Je regarde si j’ai un peu de temps

Regarde ce lien : windows - Ouvrir Outlook.exe à partir de cmd avec un corps de texte contenant des sauts à la ligne - Stack Overflow

2 « J'aime »

j’ai déjà essayer mais il me remplace « %0D%0A » dans mon mail par « 0A » sans faire de saut de ligne. après le saut de ligne c’est un détail, si vraiment c’est impossible c’est pas très grave… le plus gros problème c’est mon chemin de fichier dans « %Repertoire_fichier% » qui peux avoir des espaces et/ou accent sur les é par exemple et qui du coup ne sortent pas bien dans le mail et le chemin est faux

"C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE" /c ipm.note /m "%Email%?subject=Nouveau projet a programmer - %Nom_fichier%&body=Bonjour, voici un nouveau projet a programmer : Repertoire : file\\\%Repertoire_fichier% Nom du fichier : %Nom_fichier%"

Dans le html pas d’accent pour les remplacer voici la démarche à adapter au langage:
https://www.leptidigital.fr/productivite/caracteres-speciaux-html-2-19297/#:~:text=Dans%20le%20langage%20HTML%2C%20les,encodé%20sur%20les%20pages%20web.

si je comprend bien avant d’exécuter le shell présent ici, je doit en exécuter un autre avant qui va venir prendre le Tasks_email.bat et remplacer tout les caractères spéciaux dedans ?
puis passez à l’autre shell ?

ça deviens beaucoup trop complexe pour moi j’ai beau essayer dans tout les sens, depuis 2h je suis complétement perdu.

ça serais pas plus simple en script VBA ? il n’y aurais pas toutes ces contrainte ?

je n’arrive juste pas a récupérer le nom et le chemin du fichier de la ou e lance ma tache.

Dim swApp As Object
Dim oOutlook As Object
Dim oMailItem As Object
Dim Body As Variant
Dim sTmp As String, SigString As String
Dim Signature As String
Dim strbody As String

Sub main()

    Set swApp = Application.SldWorks

    PreparerOutlook oOutlook
    Set oMailItem = oOutlook.CreateItem(0) ' 0 = olMailItem

    strbody = "<font size=3>" _
            & "Bonjour,<br>" _
            & "Voici un nouveau projet à programmer.<br>" _
            & "<br>" _
            & "Cordialement,"

    With oMailItem
        .Display
        .To = "monmail@mail.fr"
        .Subject = "Nouveau projet à programmer"
        .HTMLBody = strbody & .HTMLBody
    End With

End Sub

Private Sub PreparerOutlook(ByRef oOutlook As Object)
    On Error Resume Next
    Set oOutlook = GetObject(, "Outlook.Application")
    If (Err.Number <> 0) Then
        Err.Clear
        Set oOutlook = CreateObject("Outlook.Application")
        If (Err.Number <> 0) Then
            MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
            Exit Sub
        End If
    End If
End Sub```

Bonjour,

Je n’ai pas trop de temps à consacrer à ce sujet en ce moment.
Pour le fonctionnement avec une tâche il faut regarder comment est récupéré le chemin d’accès et le nom de fichier dans les autres scripts pour pouvoir le passer en paramètre dans la constitution du corps du mail.

1 « J'aime »

j’ai trouvé la solution, voici le code si ça intéresse quelqu’un :

Dim swApp As Object
Dim oOutlook As Object
Dim oMailItem As Object
Dim Body As Variant
Dim sTmp As String, SigString As String
Dim Signature As String
Dim strbody As String
Dim fichierChemin As String
Dim NomFichier As String
Dim cheminComplet As String
Dim nomAvecExtension As String

Sub main()

    Set swApp = Application.SldWorks

    fichierChemin = "<Path>"
    cheminComplet = "<Filepath>"
    nomAvecExtension = Mid(cheminComplet, InStrRev(cheminComplet, "\") + 1)
    NomFichier = Left(nomAvecExtension, InStrRev(nomAvecExtension, ".") - 1)



    PreparerOutlook oOutlook
    Set oMailItem = oOutlook.CreateItem(0) ' 0 = olMailItem

strbody = "<font size=3>" _
        & "Bonjour,<br>" _
        & "Voici un nouveau projet à programmer :<br>" _
        & "<br>" _
        & "Chemin du projet : <a href='file://" & Replace(fichierChemin, "\", "/") & "'>" & fichierChemin & "</a><br>" _
        & "Nom de l'assemblage : <b>" & nomAvecExtension & "</b><br>" _
        & "<br>" _
 

    With oMailItem
        .Display
        .To = "mail@mail.fr"
        .Subject = "Nouveau projet à programmer - " & NomFichier 
        .HTMLBody = strbody & .HTMLBody
    End With

End Sub

Private Sub PreparerOutlook(ByRef oOutlook As Object)
    On Error Resume Next
    Set oOutlook = GetObject(, "Outlook.Application")
    If (Err.Number <> 0) Then
        Err.Clear
        Set oOutlook = CreateObject("Outlook.Application")
        If (Err.Number <> 0) Then
            MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
            Exit Sub
        End If
    End If
End Sub
2 « J'aime »