Lotus Notes / Domino Sonstiges > OLE/COM-Programmierung
Skript zum versenden von Mails aus Excel löst Rechtschreibprüfung aus
emil17:
Hallo zusammmen,
ich bräuchte mal dringend Hilfe.
Ich möchte eine automatisch generierte Mail aus Excel mittels VBA Skript versenden. Leider wird das Skript durch die Notes Rechtschreibprüfung unterbrochen. Wer weiss wie man die Rechtschreibprüfung unterbinden kann?
Hier der VBA Code, den ich im Internet gefunden habe.
Sub lotus(sEmpfang As String, sKopie As String, sBetrifft As String, sText As String)
Dim session As Object, db As Object, doc As Object, rtobject, ws As Object
Dim AttachMe As Object, DerAnhang As Object
Dim user As String, server As String, mailfile As String, sBlindKopie As String
Dim vAn As Variant, vCopy As Variant, vBlind As Variant, sAnhang As String
On Error GoTo Fehler
'sText = "Erste Zeile!" & vbCrLf & "Zweite" & vbCrLf & "Dritte" ' Testtext
sText = Replace(sText, vbCrLf, Chr(10)) ' Zeilenumbrüche ändern
' sBetrifft = " Beispiel"
'Wenn du keine Kopie od Blindkopie versenden willst, dann grad weglassen
'sKopie = "" ' Einträge durch " ; " getrennt
'sBlindKopie = "Email1 ; Email2 " ' Einträge durch " ; " getrennt
vAn = Split(sEmpfang, " ; ") ' Empfänger Array
sAnhang = "" ' Muss natürlich richtig gesetzt werden C:\TEST.pdf
If Len(sKopie) > 0 Then vCopy = Split(sKopie, " ; ") 'cc Array
If Len(sBlindKopie) > 0 Then vBlind = Split(sBlindKopie, " ; ") 'bcc Array
Set session = CreateObject("notes.notessession") ' Notes muss gestartet sein
user = session.UserName
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set db = session.getdatabase(server, mailfile)
Set doc = db.createdocument()
doc.Form = "Memo"
doc.SendTo = vAn ' an array
If Len(sKopie) > 0 Then doc.CopyTo = vCopy 'cc Array
If Len(sBlindKopie) > 0 Then doc.blindcopyto = vBlind 'bcc Array
doc.Subject = sBetrifft ' die Betreffzeile
doc.SAVEMESSAGEONSEND = True
doc.PostedDate = Now
'Die Zeilen mit dem Anhang nach hier oben verschieben, ist wichtig die Reihenfolge
' *******************************************
If sAnhang <> "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang) ',"Attachment" wird nicht benötigt
End If
'*******************************
Set ws = CreateObject("Notes.NotesUIWorkspace") ' **durch das öffnen des Dokumentes durch NotesUIWorkspace**
Call ws.EDITDOCUMENT(True, doc) ' **erreicht man das die eingestellte Signatur aus den **
Set doc = ws.CURRENTDOCUMENT ' **Lotus Notes Optionen eingefügt wird **
Call doc.GOTOFIELD("Body")
Call doc.insertText(sText)
Call doc.Send(True)
Call doc.Close 'Schliesst das gesendete Formular
Call doc.Save(True, True)
Aufraeumen:
On Error Resume Next
Set AttachMe = Nothing
Set DerAnhang = Nothing
Set ws = Nothing
Set doc = Nothing
Set db = Nothing
Set session = Nothing
Exit Sub
Fehler:
Resume Aufraeumen
End Sub
Axel:
An welcher Stelle wird das Skript denn unterbrochen?
Was passiert wenn du die Rechtschreibprüfung ausschaltest?
Axel
emil17:
Hallo Axel,
wenn ich die autom. Rechtschreibprüfung ausschalte, dann läuft das Skript durch.
Bei eingeschalteter Rechtschreibprüfung geht nach dem Befehl
Call doc.Send(True)
die Box für die Rechtschreibprüfung auf. Erst wenn diese geschlossen wird z.B. durch drücken auf die Schaltfläche "Ungeprüft senden" läuft das Skript weiter.
Da das Programm an mehrere Nutzer verteilt werden soll, sollte die eigentlich nützliche Funktion der Rechtschreibprüfung für das normale Arbeiten mit Notes eingeschaltet bleiben.
ich habe beim Stöbern auch schon diesen Artikel gefunden.
http://atnotes.de/index.php?topic=15222.0;wap2
Dieser funktioniert aber nicht unter VBA
koehlerbv:
Sollen denn die Benutzer überhaupt noch etwas in dem Mail editieren können, bevor es versendet wird?
Wenn ja, dann ist das mit der Rechtschreibprüfung ja des Nutzers Wunsch und korrekt - und von Dir nicht abschaltbar.
Wenn nicht, dann erstelle das Mail einfach über das Backend und verschicke es auch so.
Bernhard
Axel:
Solange du das Mail im Frontend öffnest
--- Code: ---...
Set ws = CreateObject("Notes.NotesUIWorkspace") ' **durch das öffnen des Dokumentes durch NotesUIWorkspace**
Call ws.EDITDOCUMENT(True, doc) ' **erreicht man das die eingestellte Signatur aus den **
Set doc = ws.CURRENTDOCUMENT
....
--- Ende Code ---
und dann erst sendest schlägt die Rechtschreibprüfung zu.
Du musst alles im Backend machen. Nur dann bleibt die Rechtschreibprüfung außen vor.
Tipp:
Die entsprechende Signatur kannst du aus dem Calenderprofile auslesen.
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln