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:

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