Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1156to1160
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige