Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Email-Progr mit beenden

Email-Progr mit beenden
Klaus
Hallo Excelfreunde,
wie kann ich das mit den hier aus dem Forum stammenden, nachfolgenden Prozeduren geöffnete Email-Progr nach Erstellung und senden der Email mit beenden?
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nshowcmd As Long) As Long
Private Sub Mail(email As String, _
Optional Subject As String, _
Optional Body As String)
Call ShellExecute(0&, "Open", "mailto:" + email + _
"?Subject=" + Subject + "&Body=" + Body, "1", "2", 1)
End Sub
Danke für Eure Bemühungen!
Gruß Klaus
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Email-Progr mit beenden
13.05.2010 13:16:56
Anton
Hallo Klaus,
so kannst du das geöffnete Email-Progr beenden:
Code:

Sub Mail_beenden()
  Dim WshShell As Object, objWMIService As Object  
  Dim strZuordnung As String, posEXE As Integer, pos As Integer    
  Dim Anwendung As String, colProcessList, objProcess  
  Set WshShell = CreateObject("WScript.Shell")  
  strZuordnung = WshShell.RegRead("HKEY_CLASSES_ROOT\mailto\shell\open\command\")
  strZuordnung = Replace(strZuordnung, Chr(34), "")
  posEXE = InStr(UCase(strZuordnung), ".EXE")  
  If posEXE > 0 Then  
    Anwendung = Left(strZuordnung, posEXE + 3)
    pos = InStrRev(Anwendung, "\")
    Anwendung = "'" & Mid(Anwendung, pos + 1) & "'"
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
    Set colProcessList = objWMIService.ExecQuery _
      ("Select * from Win32_Process Where Name = " & Anwendung)
    For Each objProcess In colProcessList  
      objProcess.Terminate
    Next
    Set objWMIService = Nothing  
  End If  
  Set WshShell = Nothing  
End Sub  


mfg Anton
Anzeige
AW: Email-Progr mit beenden
13.05.2010 14:06:38
Klaus
Hallo Anton,
vielen Dank für Deine Mühen! ABER die Proz führt bei mir nicht zum Ziel.
Sie läuft zwar fehlerfrei durch, aber ab > Set objWMIService = GetObject("... In Zeile > Anwendung = "'" & Mid(Anwendung, pos + 1) & "'"... objProcess und colProcessList bleiben allerdings "leer".
Fehlt da eine Set-Anweisung oder wo klemmt es sonst?
Gruß Klaus
Anzeige
AW: Email-Progr mit beenden
13.05.2010 14:51:31
Anton
Hallo Klaus,
so kannst du das geöffnete Email-Progr beenden

das heisst , dass Email-Progr muss schon laufen , bevor du die Procedur startest.
mfg Anton
AW: Email-Progr beenden auch ohne Versenden
14.05.2010 12:54:42
Klaus
Hallo Anton und sonstige Lösungsfinder,
Danke Anton! Alles klappt, wenn die Email "gesendet" wurde. Andernfalls wird das Email-Programm nicht geschlossen.
Gibt es eine Lösung dies dennoch zu erreichen?
Gruß Klaus
Anzeige
AW: Email-Progr beenden auch ohne Versenden
15.05.2010 12:25:08
Anton
Hallo Klaus,
probier's so:
Code:

Private Declare Function ShellExecute Lib "shell32.dll" _  
  Alias "ShellExecuteA" (ByVal hwnd As Long, _  
  ByVal lpOperation As String, ByVal lpFile As String, _  
  ByVal lpParameters As String, ByVal lpDirectory As String, _  
  ByVal nshowcmd As Long) As Long  
Private Sub Mail(email As String, _    
  Optional Subject As String, _    
  Optional Body As String)  
  Call ShellExecute(0&, "Open", "mailto:" + email + _  
    "?Subject=" + Subject + "&Body=" + Body, "1", "2", 1)
End Sub  
Sub test()
  Mail "klaus@web.de", "Betreff", "Body"
  If MsgBox("Wollen Sie E-Mail Programm beenden?", vbYesNo, "Abfrage") = vbYes Then  
   'E-Mail Programm beenden , dabei spielt es keine Rolle,
   'ob die Email gesendet wurde oder nicht
    Mail_beenden
  End If  
End Sub  
Private Sub Mail_beenden()  
  Dim WshShell As Object, objWMIService As Object  
  Dim strZuordnung As String, posEXE As Integer, pos As Integer    
  Dim Anwendung As String, colProcessList, objProcess  
  Set WshShell = CreateObject("WScript.Shell")  
  strZuordnung = WshShell.RegRead("HKEY_CLASSES_ROOT\mailto\shell\open\command\")
  strZuordnung = Replace(strZuordnung, Chr(34), "")
  posEXE = InStr(UCase(strZuordnung), ".EXE")  
  If posEXE > 0 Then  
    Anwendung = Left(strZuordnung, posEXE + 3)
    pos = InStrRev(Anwendung, "\")
    Anwendung = "'" & Mid(Anwendung, pos + 1) & "'"
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
    Set colProcessList = objWMIService.ExecQuery _
      ("Select * from Win32_Process Where Name = " & Anwendung)
    For Each objProcess In colProcessList  
      objProcess.Terminate
    Next
    Set objWMIService = Nothing  
  End If  
  Set WshShell = Nothing  
End Sub  


mfg Anton
Anzeige
Alles geklärt! Danke!
17.05.2010 13:13:23
Klaus
Hallo Anton,
vielen, vielen Dank! Klappt alles wunderbar. Habe dabei auch meinen Fehler entdeckt.
Grußm Klaus
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige