Autor Thema: Skript zum versenden von Mails aus Excel löst Rechtschreibprüfung aus  (Gelesen 10410 mal)

Offline emil17

  • Frischling
  • *
  • Beiträge: 4
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
« Letzte Änderung: 14.06.12 - 07:06:06 von emil17 »

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
An welcher Stelle wird das Skript denn unterbrochen?

Was passiert wenn du die Rechtschreibprüfung ausschaltest?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline emil17

  • Frischling
  • *
  • Beiträge: 4
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
« Letzte Änderung: 14.06.12 - 13:14:16 von emil17 »

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
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
....

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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline emil17

  • Frischling
  • *
  • Beiträge: 4
Hallo Axel,

ich würde das ganze ja auch gerne im Backend machen.

Leider enthält der Mailtext auch einen Link. Bisher habe ich es im Backend nicht geschafft, dass LN mir einen Link daraus macht. Wenn die Mail beim Empfänger ankommt, wird zwar der Link als Text angezeigt, aber wenn man darauf klickt passiert nichts.
Ich hoffe ich habe es verständlich beschrieben.

Ich habe es auch mit dem Code probiert, die mail kommt zwar an, aber nur als Text nicht als html

Set richStyle = session.CreateRichTextStyle

'Create and set the Body content
Set body = MailDoc.CREATERICHTEXTITEM("Body")
richStyle.PASSTHRUHTML = True

Call body.APPENDSTYLE(richStyle)


Call body.AppendText("<B>Hello</B>")

Offline emil17

  • Frischling
  • *
  • Beiträge: 4
Hallo Axel,

ich würde das ganze ja auch gerne im Backend machen.

Leider enthält der Mailtext auch einen Link. Bisher habe ich es im Backend nicht geschafft, dass LN mir einen Link daraus macht. Wenn die Mail beim Empfänger ankommt, wird zwar der Link als Text angezeigt, aber wenn man darauf klickt passiert nichts.
Ich hoffe ich habe es verständlich beschrieben.

Ich habe es auch mit dem Code probiert, die mail kommt zwar an, aber nur als Text nicht als html

Code
Function sendemail()

Dim Maildb As Object
Dim MailDoc As Object
Dim body As Object
Dim session As Object
Dim richStyle As Object
Dim richtext As Object
Dim sendto As Variant
Dim username As String
Dim maildbname As String

'Start a session to notes
Set session = CreateObject("Notes.Notessession")
'Call Session.Initialize
username = session.username

maildbname = Left$(username, 1) & Right$(usermane, (Len(username) - InStr(1, username, ""))) & ".nsf"
''Open the mail database in notes
Set Maildb = session.GETDATABASE("", maildbname)
''Open the mail database in notes
If Maildb.IsOpen = True Then
Else
Call Maildb.OPENMAIL
End If
''Create the mail document
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.sendto = "xy@atnotes.de"
MailDoc.Subject = "Test lotus Notes"
MailDoc.Form = "Memo"
MailDoc.CONTENTTYPE = "text/html; charset=iso-8859-1"
MailDoc.preference = no

'Session.CONVERTMIME = False
Set richStyle = session.CreateRichTextStyle

'Create and set the Body content
Set body = MailDoc.CREATERICHTEXTITEM("Body")
richStyle.PASSTHRUHTML = True

Call body.APPENDSTYLE(richStyle)


Call body.AppendText("<B>Hello</B>")
'Call body.richStyle.AppendText("<B>Hello</B>")
Call body.AppendText("<a href=http://www.atnotes.de>atnotes</a>")
Call body.ADDNEWLINE(2)
Call body.AppendText("Hello HTML")




MailDoc.SAVEMESSAGEONSEND = True
Call MailDoc.REPLACEITEMVALUE("PostedDate", Now())
Call MailDoc.SEND(False)
Call MailDoc.Save(True, False)
'Session.CONVERTMIME = True

Set Maildb = Nothing
Set MailDoc = Nothing
Set body = Nothing
Set session = Nothing

End Function
« Letzte Änderung: 14.06.12 - 14:21:03 von emil17 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz