Script voor EPDM-taak

Hallo, ik heb een nieuwe taak aangemaakt in EPDM " nieuw project om in te plannen "

En ik wil graag Als ik met de rechtermuisknop op de assemblage of op het betreffende onderdeel klik en ik klik op mijn taak:
image

het opent het venster Nieuw bericht van de EPDM-mailbox (alsof ik met de rechtermuisknop klik → → een collega op de hoogte te stellen)

en dat het vult: Verzenden naar: " Programmeren " automatisch.
in de Fill in Subject: New project to schedule & " zet automatisch de naam van het bestand waar ik met de rechtermuisknop op heb geklikt"

En in het bericht zette een bericht en de locatie van het bestand waar ik met de rechtermuisknop klikte.

Het enige dat overblijft is om te klikken op verzenden naar de gebruiker naar de relevante mensen en desgewenst een extra opmerking toe te voegen.

Is het mogelijk en zo ja, heeft iemand een idee van het script dat ik in mijn taak moet plaatsen?

Hallo

Ik kon de argumenten niet vinden om de interne berichtentool van Solidworks PDM in te stellen om het gewenste resultaat te krijgen.
Een andere optie, ga door Outlook: Dispatch gebruiken om Outlook-berichten te verzenden via gegevenskaartvariabele

1 like

Hallo
Het is me net gelukt met deze code in het taakscript:

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

Zou je willen weten hoe ik de naam van het bestand of de map nu kan ophalen als ik er met de rechtermuisknop op klik en de taak uitvoer?
En herstel ook het volledige pad van dat bestand of die map
dat ik beide in mijn e-mail kan opnemen?

Hallo

Je moet in de VBA-logica van SW blijven en functies zoals GetPathname enz. hergebruiken.
Ik denk dat het gemakkelijker zou zijn geweest om via Dispatch te gaan, waarmee je de informatie van de geselecteerde bestanden in de kluis kunt ophalen en dat allemaal in kaart kunt brengen (minder manipulatie van VBA in vergelijking met een taak)

1 like

Heb je voorbeelden? Ik ben verdwaald...

Voor disptach?
In de link die ik in mijn eerste antwoord heb gezet, staat een goed deel.

1 like

Van wat ik begreep:

Ik heb de twee bestanden hier geplaatst: F:\PDM\Admin\Dispatch

het tasks_email.bat bestand leeg is (maar het wordt ingevuld zoals het .txt bestand wanneer ik de verzending uitvoer)

Het email_template.txt bestand bevat:
" C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE " /c ipm.note /m " monmail@mail.fr?subject=Nieuw project naar program&body=Hallo, hier is een nieuw project om te programmeren: "

Ik heb in Genereer het instellingenbestand:

Model: F:\PDM\Admin\Dispatch\email_template.txt
Naam van: F:\PDM\Admin\Dispatch\tasks_email.bat

Ik heb Run Shell ingevoerd:

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

maar er moet een bug zijn als ik dit plaats, het voegt dubbele dingen toe als ik valideer (zie afbeelding)

Maar er gebeurt niets... vanwege de shell-bug denk ik?

Het is oké, vond ik, je moet niet open schrijven.

Hoe kan ik lijnafbrekingen in mijn rompertje doen?

En hoe doe je dat, want in het bestandspad heb ik bijvoorbeeld accenten op de e's, en dus transformeert het ze wanneer het de e-mail schrijft?

Het is HTML, dus ik denk bijvoorbeeld zo:

"<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>"

Ik heb dit geplaatst, maar het vertelt me dat het argument van de opdrachtregel ongeldig is

Ik denk niet in argumentatie. Ik zal kijken of ik wat tijd heb

Regarde ce lien : windows - Open Outlook.exe from cmd with body text containing newlines - Stack Overflow

2 likes

Ik heb het al geprobeerd, maar het vervangt " 0D% 0A " in mijn e-mail door " 0A " zonder een regeleinde te maken. Na het einde van de regel is het een detail, als het echt onmogelijk is, is het niet erg... Het grootste probleem is mijn bestandspad in " %Repertoire_fichier% ", dat bijvoorbeeld spaties en/of accenten op de É kan hebben en die daardoor niet goed uitkomen in de mail en het pad is verkeerd

"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%"

In html geen accent om ze te vervangen, hier is de aanpak om aan te passen aan de taal:
https://www.leptidigital.fr/productivite/caracteres-speciaux-html-2-19297/#:~:text=Dans%20le%20langage%20HTML%2C%20les,encodé%20sur%20les%20pages%20web.

Als ik het goed begrijp voordat ik de shell hier uitvoer, moet ik er nog een uitvoeren voordat die de Tasks_email.bat neemt en alle speciale tekens erin vervangt?
Schakel dan over naar de andere schaal?

Het wordt veel te complex voor mij, hoe hard ik ook probeer, de afgelopen 2 uur ben ik volledig de weg kwijtgeraakt.

zou het niet makkelijker zijn in VBA-script? Zouden er niet al deze beperkingen zijn?

Ik kan alleen de naam en het pad van het bestand niet ophalen waar ik mijn taak start.

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```

Hallo

Ik heb op dit moment niet al te veel tijd om aan dit onderwerp te besteden.
Om met een taak te werken, moet je kijken naar hoe het pad en de bestandsnaam worden opgehaald uit de andere scripts om het als parameter door te kunnen geven in de samenstelling van de body van de mail.

1 like

Ik heb de oplossing gevonden, hier is de code als iemand geïnteresseerd is:

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 likes