Skrypt dla zadania EPDM

Witam, utworzyłem nowe zadanie w EPDM " nowy projekt do zaplanowania "

I chciałbym, aby Kiedy to zrobię, kliknij prawym przyciskiem myszy na zespół lub na daną część i kliknę na moje zadanie:
image

otwiera okno Nowa wiadomość w skrzynce pocztowej EPDM (tak jakbym klikał prawym przyciskiem myszy, → powiadomić → kolegę)

i że wypełnia się: Wyślij do: " Programowanie " automatycznie.
w polu Wypełnij temat: Nowy projekt do zaplanowania i " automatycznie wpisz nazwę pliku w miejscu, w którym kliknąłem prawym przyciskiem myszy "

A w wiadomości umieść wiadomość i lokalizację pliku, w którym kliknąłem prawym przyciskiem myszy.

Pozostaje tylko kliknąć na wyślij do użytkownika do odpowiednich osób i dodać dodatkowy komentarz, jeśli sobie tego życzą.

Czy jest to możliwe, a jeśli tak, to czy ktoś ma pomysł na scenariusz, który powinienem umieścić w swoim zadaniu?

Witam

Nie udało mi się znaleźć argumentów, aby ustawić narzędzie do obsługi wiadomości wewnętrznych Solidworks PDM w celu uzyskania pożądanego rezultatu.
Inną opcją jest skorzystanie z programu Outlook: Używanie wysyłania wiadomości programu Outlook według zmiennej karty danych

1 polubienie

Witam
Właśnie udało mi się z tym kodem w skrypcie zadania:

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

Czy byłbyś, jak mogę teraz odzyskać nazwę pliku lub folderu, gdy kliknę go prawym przyciskiem myszy i uruchomię zadanie?
A także odzyskaj pełną ścieżkę do tego pliku lub folderu
że mogę uwzględnić oba te elementy w moim e-mailu?

Witam

Musisz pozostać w logice VBA oprogramowania i ponownie używać funkcji, takich jak GetPathname itp.
Myślę, że łatwiej byłoby przejść przez Dispatch, który pozwala na pobranie informacji o wybranych plikach w skarbcu i zmapowanie tego wszystkiego (mniej manipulacji VBA w porównaniu z zadaniem)

1 polubienie

Czy masz jakieś przykłady? Jestem zagubiony...

Dla disptach?
W linku, który umieściłem w mojej pierwszej odpowiedzi, jest dobra część.

1 polubienie

Z tego co zrozumiałem:

Umieściłem tutaj te dwa pliki: F:\PDM\Admin\Dispatch

plik tasks_email.bat jest pusty (ale wypełnia się jak plik .txt, gdy uruchamiam wysyłanie)

Plik email_template.txt zawiera:
" C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE " /c ipm.note /m " monmail@mail.fr?subject=Nowy projekt do programu&body=Witaj, oto nowy projekt do zaprogramowania: "

Wstawiłem w Generate plik ustawień:

Model: F:\PDM\Admin\Dyspozycja\email_template.txt
Nazwa: F:\PDM\Admin\Dispatch\tasks_email.bat

Umieściłem w Run Shell:

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

ale musi być błąd, kiedy to umieszczam, dodaje zduplikowane rzeczy, gdy sprawdzam poprawność (patrz obrazek)

ale nic się nie dzieje... z powodu błędu powłoki, jak sądzę?

W porządku, znalazłem, nie powinieneś pisać otwarcie.

Jak mogę zrobić przerwy w linii w moim body?

A jak to zrobić bo w ścieżce do pliku mam akcenty na przykład na e i tak je przekształca podczas pisania maila?

To jest HTML, więc myślę, że tak na przykład:

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

Umieściłem to, ale mówi mi, że argument wiersza poleceń jest nieprawidłowy

Nie myślę w kłótni. Zobaczę, czy starczy mi trochę czasu

Regarde ce lien : windows - Otwórz Outlook.exe z cmd z tekstem głównym zawierającym znaki nowej linii - Stack Overflow

2 polubienia

Już próbowałem, ale zamienia " %0D%0A " w moim e-mailu na " 0A " bez tworzenia podziału wiersza. Po zerwaniu linii to szczegół, jeśli to naprawdę niemożliwe, to nic wielkiego... Największym problemem jest moja ścieżka do pliku w " %Repertoire_fichier% ", która może mieć spacje i/lub akcent na przykład na É i dlatego nie wychodzi dobrze w mailu, a ścieżka jest nieprawidłowa

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

W html nie ma akcentu, który by je zastąpił, oto podejście do dostosowania się do języka:
https://www.leptidigital.fr/productivite/caracteres-speciaux-html-2-19297/#:~:text=Dans%20le%20langage%20HTML%2C%20les,encodé%20sur%20les%20pages%20web.

Jeśli dobrze rozumiem przed uruchomieniem powłoki tutaj, muszę uruchomić inną, zanim weźmie Tasks_email.bat i zastąpi wszystkie znaki specjalne w niej?
następnie przełącz się na drugą powłokę?

Staje się to dla mnie zbyt skomplikowane, bez względu na to, jak bardzo się staram, przez ostatnie 2 godziny byłem całkowicie zagubiony.

czy nie byłoby łatwiej w skrypcie VBA? Czy nie byłoby tych wszystkich ograniczeń?

Po prostu nie mogę uzyskać nazwy i ścieżki do pliku, z którego rozpoczynam zadanie.

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

Witam

Nie mam w tej chwili zbyt wiele czasu, aby poświęcić się temu tematowi.
Aby pracować z zadaniem, musisz przyjrzeć się, w jaki sposób ścieżka i nazwa pliku są pobierane z innych skryptów, aby móc przekazać je jako parametr w konstytucji treści wiadomości.

1 polubienie

Znalazłem rozwiązanie, oto kod jeśli ktoś jest zainteresowany:

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 polubienia