Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Mit Excel eine E-mail versenden, Outlook Meldung





Frage

Hallo, ich brauche Eure Hilfe!!!! Ich hab einen Code erstellt, der aus Excel eine E-mail verschickt. Es wird keine Datei als Anhang verschickt, sondern es wird eine E-mail erstellt im Outlook und dann verschickt und klappt auch gut. Jetzt folgendxes Problem: Beim versenden der MAil aus Excel wird in den Outlook gewechselt und es kommt eine Meldung, das ein andeses Programm über die E-mailadresse eine Mail verschicken will. Nun muss man immer mit "Ja" bestätigen, damit die Mail versendet wird. Kann man das umgehen un die Meldung unterdrücken, das man nicht immer mit ja bestätigen muss??? Ich danke Euch für Eure Mühe!!!! Gruß Elhamplo

Antwort 1 von coros

Hi Elhamplo,

besorg Dir die Programme ClickYes oder Advanced Security for Outlook (beides Freeware Programme). Die übernehmen das Bestätigen der Meldung.

Du musst dann nur noch am Anfang Deines Makros, mit dem Du die Mail versendest, das Programm, z.B. „ClickYes“ aufrufen und am Ende das Programm dann wieder automatisch schließen lassen. Das kann man mit nachfolgenden Makros realisieren.

Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
         
Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Declare Function TerminateProcess Lib "kernel32" _
(ByVal hProcess As Long, ByVal uExitCode As Long) As Long
   
Private Const PROCESS_TERMINATE = &H1
Sub ClickYes_exe_starten()
Shell ("C:\Programme\Express ClickYes\ClickYes.exe")
End Sub


Sub ClickYes_exe_beenden()
Dim Programmende As Long, Schluß As Long
Programmende = Shell("C:\Programme\Express ClickYes\ClickYes.exe", 0)
Schluß = OpenProcess(PROCESS_TERMINATE, False, Programmende)
TerminateProcess Schluß, 0
CloseHandle Schluß
End Sub


Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von fedjo

Hallo,
versuchs doch mal mit diesem Cote.
Gruß
fedjo

Sub Email()
Dim ol, Mail As Object
Set ol = CreateObject("Outlook.Application")
Set Mail = ol.CreateItem(0)
Mail.Subject = " Muster " & Now

Mail.To = "Mustermann@freenet.de"
Mail.cc = ""
Mail.bcc = ""

Mail.body = Chr(13) & "Hallo," & Chr(13) & _
"ich möchte Sie informieren über....." & Chr(13) & Chr(13) & Chr(13) & _
"Gruß" & Chr(13) & "Mustermann" & Chr(13) & Chr(13) & _
"Dieses Mail wurde automatisch versandt."

Mail.Display
End Sub

Antwort 3 von Elhamplo

Hey Coros,

danke für Deine Hilfe. Ich werd das gleich mal ausprobieren und werde mich wieder melden!!!

Ich danke Dir für Deine Hilfe!!!!


Hey fedjo

danke für den Code. Funst!! Danke! Jetzt noch eine Frage: kann man das automatisieren??? Mit dem Code wird der Text in eine E-mail übertragen, geht das auch das sofort gesendet wirds???

Danke!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Gruß

Elhamplo

Antwort 4 von coros

Hi Elhamplo,

ändere in dem Code von fedjo die Zeile


Mail.Display


in

Mail.Send


Wobei ich nicht ganz verstehe, was Du mit dem Code anfangen willst? Ich denke den zum Senden hast Du schon, der müsste doch fast genauso aussehen? Es ging doch um die Meldung, die bei Übermitteln an Outlook erscheint und die kommt auch bei dem Makro von fedjo.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von fedjo

Hi,
einfach die Zeile einfügen:

Mail.Display
Application.SendKeys "%s"

Man könnte auch aus der Tabelle noch Zellen kopieren und in die E-Mail einfügen.

Gruß
fedjo

Antwort 6 von Elhamplo

Hey Coros,

hab das mal Probiert mit Deinem Code. Bekomme aber eine Fehlermeldung: Fehler beim Kopilieren und folgende Zeile uist makiert:

Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

Wo muss ich den den ersten Teil Deines Codes einfügen, der Teil wo Click Yes aufgerufen wird???

Danke für Deine Hilfe!!!!!!!!!!!!!!!!!!!

Hallo fedjo,

danke für Deine Hilfe!!!!

kann man die mit einer Bedingung die Zellen in die E-mail kopieren? Als Beispiel: Wenn in Zelle C3 was steht soll die in die E-mail eigefügt werden, ansonten die Zelle nicht kopieren.

Danke!!!!!!!!!!!!!!


Ad all

Ich danke Euch für Eure Mühe!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Vielen, vielen Dank!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Gruß

Elhamplo

Antwort 7 von Risatara2

@Coros: Mitnichten wird bei dem Script von Fedjo (zum. bei mir WXP/O2k) eine Meldung ausgegeben, da Office ja nicht einfach so versendet, sondern nur ein Fenster anzeigen soll.
Ich, für meinen Teil, wäre zwar auch an einer brauchbaren Lösung interessiert, glaube aber nicht, dass die mit Office-Bordmitteln erreicht werden kann, da das ja irgendwie ein Widerspruch in sich wäre..

Antwort 8 von Elhamplo

Hey Coros,

hab noch mal ein bischen rumprobiert und muuss sagen es funst. Super Sache!!!!!!!!!!!!!!! Danke!!!!!!!!!!!!!!

Einfach klasse, ich danke Dir immer wieder für Deine Hilfe.

Gruß

Elhamplo

Antwort 9 von coros

Hi Elhamplo,

freut mich, dass Du einen Weg zum Erfolg gefunden hast. Danke Dir auch für Deine Rückmeldung.

@Risatara2: Meine Aussage, dass auch bei dem Makro von @fedjo eine Warmeldung erscheint, bezog sich auf meine Antwort, in der ich geraten hatte, um die Datei sofort in den Postausgang zu verlegen, den Befehl "Mail.Display " gegen den Befehl "Mail.Send" zu tauschen. Und dann erfolgt die Sicherheitsabfrage sehr wohl. Mit dem Zusatz der SendKeys-Anweisung von @fedjo ist dieses nicht der Fall, aber diese Antwort kam später als mein Beitrag.

MfG,
Oliver
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 10 von fedjo

Hi Elhamplo ,
ich habe das einfügen aus Excel mal auf die Aktive Zelle bezogen, mit einem Sonderzeichen ";" es werden dann fünf Zellen eingefügt das Sonterzeichen wird natürlich wieder gelöscht.
Man kann das ganze auch auf nur eine bestimmte Zelle (C3) beziehen. Das Makro läst sich am besten mit der "Enter" Taste starten.
Gruß
fedjo



Sub Enter()

Application.OnKey "{Enter}", "Email" ´Makro ausführen

End Sub

Sub Email()
If InStr(ActiveCell.Value, ";") > 0 Then

ActiveCell.Replace What:=";", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Range(ActiveCell.Offset(0, -9), ActiveCell.Offset(0, -5)).Select
Selection.Copy

Dim ol, Mail As Object
Set ol = CreateObject("Outlook.Application")
Set Mail = ol.CreateItem(0)
Mail.Subject = " Muster " & Now

Mail.To = "Mustermann@freenet.de"
Mail.cc = ""
Mail.bcc = ""
Application.SendKeys "{TAB}"

Mail.body = Chr(13) & "Hallo," & Chr(13) & _
"ich möchte Sie informieren über....." & Chr(13) & Chr(13) & Chr(13) & _
"Gruß" & Chr(13) & "Mustermann" & Chr(13) & Chr(13) & _
"Dieses Mail wurde automatisch versandt."

Mail.Display
Application.SendKeys "{TAB}"
Application.SendKeys "{TAB}"
Application.SendKeys ("^v")
Application.SendKeys "%s"

End If
End Sub

Antwort 11 von Elhamplo

Hey fedjo,

danke für Deine Code!

Bei mir passiert aber nichts. Egal ob ich Enter drücke oder den Email Makro alleine aufrufe.

Ich hab das einfach in dein Modul eingefügt , aber es passiert nicht. Was hab ich denn falsch gemacht???

Gruß

Elhamplo

Antwort 12 von fedjo

Hallo Elhamplo,
die Enter Taste muß erst aktiviert werden.

Excel Tabelle aufrufen und dem "Enter Makro" einen Buchstaben zuweisen (Extras, Makro, Makros, "Makro Enter", Optionen, Strg+ "x", OK.

Wenn dann die Tabelle geöffnet wird Strg+x drücken, Enter ist nun aktiviert, bei jedem drücken der Entertaste wird nun das "Makro Email "gestarten.

Viel Spass

Gruß
fedjo

Antwort 13 von Elhamplo

Hey fedjo,

sorry, aber es klappt nicht. Mit deinem alten Code wird eine E-mail verschickt. Der neue Code da passiert garnichts, auch wenn ich den Enter-Code herausnehme. Was kann man noch machen???

Danke für Deine Mühe!!!

Gruß

Elhamplo

Antwort 14 von fedjo

Hallo Elhamplo,
ich habe den Cote getestet, er funktionirt bei mir.

Enter Makro Bustaben zuweisen,
in die Aktive Zelle ; einfügen und die Entertaste betätigen. Es werden links der Aktiven Zelle fünf Zellen (einstellbar) in das Email eingefügt.

Gruß
fedjo

Sub Email()
If InStr(ActiveCell.Value, ";") > 0 Then

ActiveCell.Replace What:=";", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Range(ActiveCell.Offset(0, -0), ActiveCell.Offset(0, -4)).Select
Selection.Copy

Dim ol, Mail As Object
Set ol = CreateObject("Outlook.Application")
Set Mail = ol.CreateItem(0)
Mail.Subject = " Muster " & Now

Mail.To = "Mustermann@freenet.de"
Mail.cc = ""
Mail.bcc = ""
Application.SendKeys "{TAB}"

Mail.body = Chr(13) & "Hallo," & Chr(13) & _
"ich möchte Sie informieren über....." & Chr(13) & Chr(13) & Chr(13) & _
"Gruß" & Chr(13) & "Mustermann" & Chr(13) & Chr(13) & _
"Dieses Mail wurde automatisch versandt."


Mail.Display
Application.SendKeys "{TAB}"
Application.SendKeys "{TAB}"
Application.SendKeys ("^v")
Application.SendKeys "%s"



End If
End Sub

Antwort 15 von Elhamplo

Hey,

Sorry das ich mich erst jetzt melde, war Krank und hatte keine Lust an den PC zu gehen.

Werd gleich mal den Code Testen.

Mal eine Frage: Was bedeutet Send.keys ("Tab")?? und wleche sind die Zellen deren Inhalt kopiert werden???

Ich danke Dir für Deine Hilfe.

Gruß

Elhamplo

Antwort 16 von Elhamplo

Hey,

hab das mal ausprobiert (ohne die Taste Enter zuu benutzen, aber es funst nicht. Ich hab den Code einfach in ein Standardmodul kopiert und die E-mail Adresse geändert und dann den Makro ausgeführt. Ich hab keine Mail án die Adrese bekommen. Auch im Outlook steht keine Mail im Ordner gesendete Objekte. Was mache ich denn falsch??

Danke für Deine Mühen!!!

Gruß

Elhamplo

Antwort 17 von Elhamplo

Hey,

Sorry, für die späte Antwort.

Hab es nochmal ausprobiert. ES FUNKTIONIERT!!!!!

Keine Ahnung was ich falsch gemacht habe.

Vielen, viellen Dank für Deine Mühe!!!!!

Gruß

Elhamplo

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: