Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
988to992
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
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hilfe bei VBA mit Outlook gesucht

Hilfe bei VBA mit Outlook gesucht
07.07.2008 09:55:13
greenhorn
Hallo,
ich habe eine Excel-Tabelle bei der bei einer Grenzwertüberschreitung eine automatische E-mail mittels Makro versendet wird.
Die Anweisung dazu steht in dem entsprechenden Tabellemodul:

Private Sub Worksheet_Change(ByVal Target As Range)
Const Zeile1 = 4 'erste Zeile mit Werten
Const ZeileMeldung = 3 ' Zeile mit der Warnmeldung (z.B. "Drehzahl hoch")
Dim rng As Range, z As Range
Dim i As Integer
Dim Sp(1 To 15) As Integer
Dim GW(1 To 15) As Double
Dim z1 As Long
'Spalten Setzen
For i = 1 To 15
Sp(i) = i + 36 'Wert1 in Spalte 37 (AK) usw.
Next i
'Grenzwerte setzen:
GW(1) = 1: GW(2) = 2: GW(3) = 3: GW(4) = 4: GW(5) = 5: GW(6) = 6
GW(7) = 7: GW(8) = 8: GW(9) = 9: GW(10) = 10: GW(11) = 11: GW(12) = 12
GW(13) = 13: GW(14) = 14: GW(15) = 15
For i = 1 To 15 ' alle 15 Spalten prüfen:
Set rng = Intersect(Target, Range(Cells(Zeile1, Sp(i)), Cells(Rows.Count, Sp(i))))
If Not rng Is Nothing Then
For Each z In rng
If z.Value > GW(i) Then
'letzten 2 Minuten prüfen (alle 10 Sekunden ein Wert also 12 Werte):
z1 = Application.Max(z.Row - 12, Zeile1) '12 Zeilen hoch, höchstens bis [Zeile1] _
_
wg. Überschriften
If WorksheetFunction.Max(Range(Cells(z1, z.Column), z.Offset(-1, 0))) 


Der e-mail-text in einem Makro auf das er zugreift:


Sub sende_stoermeldung(mld As String)
Dim MyMessage As Object, MyOutApp As Object
'InitializeOutlook = True
Set MyOutApp = CreateObject("Outlook.Application")
'Nachrichtenobject erstellen
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "me@provider.de"
.Subject = "automatische Störmeldung MBHKW L: " & mld & " " & Date & " - " & Time
'Hier wird eine normale Text Mail erstellt
.body = "Es ist eine Störung eingetreten" & vbCrLf & mld
'Hier wird die Mail nochmals angezeigt
.Display
.Save
SendKeys "%S"
End With
MyOutApp.Quit
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub


Mein Problem liegt darin, dass er die Mail zwar erzeugt, aber nur in den Ordner Entwürfe packt.
Habe ich einen Fehler in meinem Code?

(Ich habe die Mail von meinem Computer an meine eigene Adresse geschickt, da hat er mir es in den Entwürfe gepackt. Habe auch versucht es testweise an einen Kollegen zu schicken, aber da passiert gleich gar nichts)
christian

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe bei VBA mit Outlook gesucht
07.07.2008 10:20:20
Tino
Hallo,
versuch mal anstatt
.Save
.send zu verswenden
Gruß Tino

www.VBA-Excel.de


danke, jetzt brauch ich nur noch Hilfe bei, ...
07.07.2008 13:15:00
greenhorn
dem hier, kann man das automatisch in den Einstellungen von Outlook umgehen?
Userbild
christian

AW: danke, jetzt brauch ich nur noch Hilfe bei, ...
07.07.2008 14:51:00
greenhorn
hab mal geschaut, das is ja ein komplettes Programm.
Ich von einem Kollegen gehört, dass man hier:
Userbild
ein Häckchen machen muss (wo es schon ist, das letzte in der Reihe).
Habs probiert hat aber nichts geholfen. Ist wohl auch nicht anderes als mit dem Programm möglich, oder?

AW: danke, jetzt brauch ich nur noch Hilfe bei, ...
07.07.2008 14:51:00
greenhorn
hab mal geschaut, das is ja ein komplettes Programm.
Ich von einem Kollegen gehört, dass man hier:
Userbild
ein Häckchen machen muss (wo es schon ist, das letzte in der Reihe).
Habs probiert hat aber nichts geholfen. Ist wohl auch nicht anderes als mit dem Programm möglich, oder?

Anzeige
AW: danke, jetzt brauch ich nur noch Hilfe bei, ...
07.07.2008 15:56:00
Tino
Hallo,
ich konnte es bisher nur über dieses Programm lösen,
sollte es eine alternative geben würde mich dies auch interessieren.
Gruß Tino

www.VBA-Excel.de


AW: danke, jetzt brauch ich nur noch Hilfe bei, ...
07.07.2008 20:28:42
Matthias
Hallo Tino,
ohne Outlook-Sch..., mit einem kleinen OpenSource-Kommandozeilen-Programm:
http://www.blat.net/
Falls dich der VBA-Code interessiert, melde Dich nochmal.
Gruß Matthias

AW: danke, jetzt brauch ich nur noch Hilfe bei, ...
07.07.2008 20:56:18
Tino
Hallo Matthias,
würde mich schon mal intarsieren, habe auch irgendwann mit VB mal was gemacht über
Winsock-Controls, aber über Outlook war dies eben bequemer gewesen!
Gruß Tino

www.VBA-Excel.de


Anzeige
AW: danke, jetzt brauch ich nur noch Hilfe bei, ...
07.07.2008 21:17:28
Matthias
Hallo Tino,
in ein Modul:

Option Explicit
Private Declare Function CharToOemA Lib "user32.dll" (ByVal _
lpszSrc As String, ByVal lpszDst As String) As Long
Public Function ANSItoASCII(ByVal Text As String) As String
Call CharToOemA(Text, Text)
ANSItoASCII = Text
End Function
Public Sub SendMail(xTo As String, xSubject As String, xBody As String, Optional xAttach = "")
Dim tID As Double
Dim ff As Integer
Dim fn As String
Dim cmd As String
Dim PfadBlat As String, PfadTemp As String
Dim ret As Long
' ### folgende Konstanten müssen angepasst werden!! ###
Const xServer = "smtp.domain.de"   'SMTP-Server
Const xUser = "username"           'Username
Const xPassword = "password"       'Passwort
Const xFrom = "absender@domain.de" 'Absenderadresse
'Pfade b.B. auch anpassen, voreingestellt ist hier der Pfad der Excel-Mappe:
PfadBlat = ThisWorkbook.Path 'hier steht das Programm blat.exe
PfadTemp = ThisWorkbook.Path 'hier wird mailbody.txt erzeugt, also Schreibrecht benötigt!
'Mailbody in Textdatei scheiben
ff = FreeFile
Open PfadTemp & "\mailbody.txt" For Output As ff
Print #ff, xBody
Close ff
'Shell-Befehl zusammenbauen:
cmd = """" & PfadBlat & "\blat.exe"" """ & PfadTemp & "\mailbody.txt"" -server " & _
xServer & " -u " & xUser & " -pw " & xPassword & " -f """ & _
xFrom & """ -to " & xTo & " -s """ & xSubject & """"
'bei Bedarf auch den Anhang:
If xAttach  "" Then _
cmd = cmd & " -attach """ & xAttach & """"
cmd = ANSItoASCII(cmd)
'BLAT.EXE ausführen
ret = Shell(cmd, vbNormalNoFocus)
'(wenn dich das DOS-Fenster nervt verwende vbHide statt vbNormalNoFocus)
End Sub
'zum Testen:
Sub Test()
SendMail "test@domain.de", "So geht's weiter", "Hallo du!" & vbLf & "Wie geht's?", "D:\Mappe1. _
xls"
End Sub


Gruß Matthias

Anzeige
AW: danke, jetzt brauch ich nur noch Hilfe bei, ...
07.07.2008 21:33:27
Tino
Hallo,
danke für den code.
bin auf der nachtschicht, werde morgen den code testen und rückmeldung geben.
Gruß Tino

AW: danke, jetzt brauch ich nur noch Hilfe bei, ...
08.07.2008 12:51:03
Tino
Hallo Matthias,
hat funktioniert, konnte mir eine Mail zusenden.
Danke für den Code.
Gruß Tino

www.VBA-Excel.de


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige