pl-q
Goto Top

Outlook Application wird nicht gefunden

Hallo,
Ich versuche seit Tagen einen VBScript zum laufen zu bringen.
Leider kommt die ganzen Zeit eine Fehlermeldung, das die Outlook Application nicht gefunden wurde.

Hier der Code :
Dim out 
Dim mail
Set out = CreateObject("Outlook.Application")  
Set mail = out.CreateItem(0)
mail.To = "email@hotmail.de"  
mail.Subject = "Test"  
mail.Body = "Hallo"  
mail.Send
Ich hoffe ihr könnt mir helfen, ich hab da auch meinen antivirus norton internet securiety im verdacht, das er damit zu tun hat.

Content-Key: 73222

Url: https://administrator.de/contentid/73222

Printed on: April 19, 2024 at 19:04 o'clock

Member: RDiller
RDiller Nov 13, 2007 at 16:42:42 (UTC)
Goto Top
Hi,

ich habe mal die folgende Klasse (für Access) geschrieben um Mails via Outlook zu versenden.
Aber ich denke das Funktioniert auch so.
Was mir aufgefallen ist, dass Du erstens die Variablen nicht ordentlich deklariert hast und mail wahrscheinlich falsch Setzt hast
Ich denke es müsste so aussehen:

Dim out As Outlook.Application
Dim mail As Out.MailItem
Set out = CreateObject("Outlook.Application")
Set mail = out.CreateItem(olMailItem)

Es fehlt auch die Deklaration des Empfängers
Dim objOutRecip As Outlook.Recipient
Set objOutRecip = .Recipients.Add("email@hotmail.de")
objOutlookRecip.type = olTo


Kopier einfach den Code unten und teste

'Als erstes musst Du eine Neue Klasse, i.e. clsSendMail mit dem folgenden Code erstellen
'Geht auch ohne Klasse, als Funktion. Das mit der Klasse flunzt aber besser face-wink


Option Compare Database

Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment


Public Sub Init()
Set objOutlook = CreateObject("Outlook.Application")
DoEvents
End Sub

Public Sub End_Mail()
Set objOutlook = Nothing
End Sub

Public Sub Add_Mail(Mail_To, Mail_CC,Mail_BCC,AttachmentPath, Subject, ByVal Mail_Msg As String)
' Das Mail Objekt erstellen.
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)


With objOutlookMsg
'Den Empfänger, TO, hinzufügen.
Set objOutlookRecip = .Recipients.Add(Mail_To)
objOutlookRecip.type = olTo

'den CC hinzufügen
If Mail_CC <> "" Then
Set objOutlookRecip = .Recipients.Add(Mail_CC)
objOutlookRecip.type = olCC
End If

'Den BCC hinzufügen
If Mail_BCC <> "" Then
Set objOutlookRecip = .Recipients.Add(Mail_BCC)
objOutlookRecip.Type = olBCC
End If
' Das Subject und die "importance" erstellen.
.Subject = Subject
.Body = Mail_Msg
.Importance = olImportanceHigh

' Wenn benötigt, Attachments.
If Not IsMissing(AttachmentPath) Then
Set objOutlookAttach = .Attachments.Add(AttachmentPath)
End If

' Die Empfänger über Outlook auflösen.
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then
objOutlookMsg.Display
End If
Next

.Send 'Und jetzt senden
DoEvents
End With

Set objOutlookMsg = Nothing
DoEvents

End Sub

' ---------------------------------------------------------
'Nun kannst Du diese Klasse von Überall heraus mit diesem Code aufrufen

Dim Mail As New clsSendMail 'Hier wird Mail als neues KlasseObjekt von Sendmail definiert

'Der AttachmentPath ist die location der zu attachenden Datei, i.e. c:\..\...\attachment.doc

Mail.Init
Mail.Add_Mail Mail_To, , Mail_CC,Mail_BCC,AttachmentPath, Subject, Mail_Msg
Member: pacobay
pacobay Nov 13, 2007 at 22:58:10 (UTC)
Goto Top
@RDiller interessanter Ansatz werde ich mal für mich testen face-smile

@PL-q,

nicht böse sein aber
wenn mich Kunden anrufen und mitteilen daß z.B. die Druckfunktion nicht mehr funktioniert,
dann frage ich auch zuerst ob denn der Drucker an ist.

In diesem Sinne die erste Frage die sich mir aufdrängt ist hast Du überhaupt ein lauffähiges Outlook auf deinem Rechner? Oder womöglich nur Outlook Express??

Aber eigentlich gehe ich davon aus, dass da alles ok ist. Wie auch immer mit folgendem Testscript kannst du es einfach der Fehlerursache näherkommen.

Sofern du kein Excel hast dann natürlich entsprechende Zeilen auskommentieren
bzw auf z.B word umschreiben

Habe dieses Script bei mir (auf XPP SP2 allerdings mit neuem VBS 5.7 für XP)
getestet und läuft sauber durch.


CaseA
Sollte beides laufen bzw zumindest Outlook laufen dann ist es kein Objektproblem sondern nur eine verwirrende weil unzutreffende Fehlermeldung.
D.h der Fehler liegt woanders. vgl zum Beispiel die Anmerkungen von RDiller bzgl "dass Du erstens die Variablen ..."

CaseB: Sollte nur Excel aber nicht Outlook laufen dann liegt es wohl an deinem Outlook

CASE C
Sollte es gar nicht nicht laufen, dann mal deinen Norten kaltstellen und nochmal probieren

Sonst fällt mir zur Zeit nur noch ein: Update auf 5.7
Aber es gibt keinen bedeutenden mir bekannten Grund von 5.6 auf 5.7 upzudaten
(denn keine neuen Funktionalitäten aber einige BugFixes)
Als Ursache aber unwahrscheinlich doch trotzdem eine mögliche Begründung

bei case B eventuell auch lösungsansätze aus Case C sinnvoll

<Beispielcode>

' VB Script Document
option explicit

Function TestbyGetVersion

Dim objOapp,objEapp,GetVersion

Set objEapp = CreateObject("Excel.Application")
GetVersion = objEapp.Version
Wscript.echo GetVersion

Set objOapp = CreateObject("outlook.Application")
GetVersion = objOapp.Version
Wscript.echo GetVersion

End Function

TestbyGetVersion
</Beispielcode>

Auf jeden Fall wünsche ich Dir Viel Erfolg
pacobay