Excel2002,per Klick auf Checkbox automatisch Infomail verschicken

Hi!
Vielleicht kann mir ja jemand helfen…
Ich brauche einen VBA Code, der wenn eine Checkbox ein Häkchen enthält, automatisch eine Email über Outlook verschickt ohne dabei Outlook zu öffnen…

Die Checkbox befindet sich in einem Formular, es sollte dann also das ganze Formular automatisch verschickt werden.

Bin über jede Hilfe dankbar!!
Gruß
Krissy

Hallo Krissy,

muss ich mir selber erst einmal anschauen.

Wir haben so etwas ähnliches bei uns im Einsatz, jedoch gehen bei uns die E-Mails mit einem vorher erzeugten Anhang an spezielle Adressen. Hier haben wir allerdings auch die Möglichkeit die jeweiligen Empfänger vorher per Checkbox auszuwählen.

Wird aber heute leider nichts mehr mit genauerem VBA Code.

Ein Ansatz ist vielleicht schon mal der folgende Auszug: ActiveWorkbook.SendMail Recipients:=Array(vEmpfänger), Subject:=Text

Hoffe, ich kann Dir die Tage besser helfen.

Olli G.

Hallo Olli!

Danke für deine schnelle Antwort!
Mein Programm ließt sich die Empfänger aus Zellen die sich außerhalb des Formulares befinden…

Hier mein bisheriger Code der auch Funktioniert, jedoch nicht ganz so wie ich mir es vorstelle:

'Beim Anklicken von „chk38“ wird automatisch eine Email an … gesendet

Private Sub chk38_Click()

If chk38.Value = True Then

'>> Hier wird das Formular ersteinmal nach Datum und Uhrzeit gespeichert

Dim Datumzeitstempel As String
Dim Jetzt As Date
Jetzt = Now()

Datumzeitstempel = Year(Date) & „.“ & Format(Month(Date), „00“) & „.“ & Format(Day(Date), „00“)
Datumzeitstempel = Datumzeitstempel & „-“ & Format(Hour(Jetzt), „00“) & „.“ & Format(Minute(Jetzt), „00“) & „.“ & Format(Second(Jetzt), „00“)

'wenn „q2“(Zelle in der sich der Dateiname einfügt) nicht ausgefüllt ist wird Dateiname neu eingespeichert, ansonsten den Wert aus „q2“

If [q2].Value = ActiveWorkbook.FullName Then

ActiveWorkbook.SaveAs [q2].Value

Else: ActiveWorkbook.SaveAs _
„mein Pfad“ & Range(„e10“).Value & „_“ & Datumzeitstempel & „.xls“

End If

[q2] = ActiveWorkbook.FullName

Dim outl As Object
Dim mail As Object

Dim strPathName As String

'Pfandname aus q2 auslesen
strPathName = [q2].Value

'Variablen als Objekte bestimmen
Set outl = CreateObject(„Outlook.Application“)
Set mail = outl.CreateItem(0)

'dynamischer Link (da nur der Link der zum Formular führt verschickt wird und das selbe Formular ein paar mal von verschiedenen Leuten ausgefüllt wird)

mail.HTMLBody = „Zum Änderungsanweisungsformular „“->Innenlagenkerne vernichten“ 'Leerzeichn mit „_“ bei Zeilenumbruch
mail.To = [m5]
mail.Subject = „Änderungsanweisung“ & „_“ & [e10].Value
mail.send

End If
End Sub

Das Programm läuft eigentlich, mich stört nur jedes mal die Meldung, dass es sich vielleicht um einen Virus handelt oder gerade eine Email im Hintergrund verschickt wird, so dass der Benutzter das Fortsetzen bestätigen muss…Und es wird „Run-time error ‚287‘ Application - defined or object - defined error“ angezeigt…

Es gibt bestimmt eine elegantere Lösung als meine ^^

Danke für deine Hilfe!!!
Liebe Grüße
Krissy

Hi Krissy89!

Ich weiß zwar nicht genau wie man über Outlook auf diese Weise was versenden kann, aber ich kann dir sagen, wie man die Checkbox abfragt und ein E-Mail mit einem anderen Programm (www.blat.net) über SMTP abschickt.

Schau dir erstens mal die Homepage von blat an und probier das mal einfach so auf der command-line (cmd.exe). Wenn du das hinbekommst, dann kannst du diesen Programmaufruf (zB C:\blat\blat.exe …) in ein Shell(blat_cmd) einpacken.

Beispiel:

Private Sub CheckBox1_Click()
If CheckBox1 = True Then
MsgBox „CB is pressed“
Shell („calc.exe“)
Else
MsgBox „CB NOT pressed“
End If
End Sub

In diesem Fall bringt er mir eine kleine Meldung, dass die Combobox gedrückt (also der Haken drin is) und startet dann automatisch den Taschenrechner von Windows. Hier könntest du dann dein Blat-Commando einsetzen.

Ich hoffe dir damit ein bisschen weitergeholfen zu haben.

neotokyo_1

Hallo,

leider muss ich hier passen. Hatte bisher noch nie versucht Outlook mit VBA anzusprechen.

Grüße,
Andre

Hi neotokyo_1!

Danke das du mir helfen willst aber ich versteh absolut den Sinn deiner Idee nicht…ich versteh auch nicht was dieses „blat“ ist … versende ich die Emails dann über die Internetseite oder wie läuft das? Vielleicht könntest du es mir etwas genauer erklären…

Gruß
Krissy

Vielleicht könntest du es
mir etwas genauer erklären…

Hi nochmal,

diese blat.exe erlaubt es dir über die Eingabeaufforderung (cmd.exe) ein E-Mail über einen SMTP-Server zu versenden - ohne einen E-Mail-Client, wie zB Outlook, zu öffnen. Du gibst auf der Eingabeaufforderung zB folgendes ein:
C:\>blat -to -subject „Hier dein Betreff“ -body „Hier der Bodytext, also die eigentliche Nachricht“ -from

Damit hast du schon mal dein erstes Mail per Kommandozeile verschickt :smile: Es gibt hier noch viel mehr Parameter. Mit einem davon kannst auch eine Datei mitanhängen. Bitte schau dir selbst die Syntax auf der Homepage mal an.
Der Große Nachteil: du brauchst einen SMTP-Server. Wenn du das ganze in einem Unternehmen brauchst, dann frag einfach deinen Administrator. Du musst nämlich in der Registry ein paar Werte verändern. BITTE AUFPASSEN! In der Registry kannst du auch vieles kaputt machen! ADMINISTRATOR FRAGEN !!! Wichtig ist vor allem mal der Parameter HKLM\Software\Public Domain\Blat\ SMTP Server Hier trägst du deinen SMTP-Server ein. Entweder die IP-Adresse oder den DNS-Namen (zB mysmtp.firma.com)

Der VBA-Code soll lediglich veranschaulichen, dass du mit einer gedrückten Checkbox ( CheckBox1 = True ) ein Programm über die Kommandozeile (Shell()) aufrufen kannst.

Ich weiß leider nicht, wie du Outlook verwenden kannst ohne es zu öffnen.

Hoffentlich hab ich dich jetzt nicht ganz verwirrt ?!

neotokyo_1

Hallo.
Sorry das ich so spät antworte.
Kann Dir leider nicht weiterhelfen.
Hoffe, Du findest jmd für Dein Problem.

Gruß, Victoria

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Krissy89
,das ist ganz schön schwierig und auch nicht in einem Satz zu beantworten.
Für den Anfang soltlest Du Dir erstmal das thema in der Hilfe durchlesen:

Du brauchst eine Variable vom typ outlook-anwendung
Dim obj_outlook As outlook .Application
Set obj_excel = New outlook .Application

…usw…

Viel Erfolg!

Dagmar

Hallo, bei mir funktioniert das so:

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
ActiveWorkbook.SendMail Recipients:=„[email protected]
End If
End Sub

Gruß, Bernd