Domino 9 und frühere Versionen > ND9: Administration & Userprobleme

E-Mailversand aus Excel geht mit LN 9 nicht mehr

<< < (2/17) > >>

Benni1988:
Hallo zusammen,

sorry, dass ich mich erst jetzt wieder melde, aber ich war krank und hatte somit keinen Zugriff auf LN.

Ich habe jetzt eure Tipps PROBIERT anzuwenden, vielen Dank dafür! (Hoffe, habe es richtig gemacht)

Ich bekomme die Mails zumindest wieder gesendet. :)

Allerdings wollte ich euch fragen, ob das so in Ordnung ist, oder ob das immer noch unsauber ist. Möchte mich nämlich gerne verbessern.


Option Explicit


Sub CommandButton1_Click()
  If MsgBox("Sollen die E-Mail(s) gesendet werden?", vbQuestion + vbYesNo, _
    "Löschen bestätigen") = vbYes Then

  Dim i As Long
  Dim sText As Variant
  Dim sEmpfang As Variant
  Dim sBetrifft As String
  Dim session As Variant
  Dim db As Variant
  Dim uiDocument As Variant
  Dim rtobject, ws As Variant
  Dim doc As Variant
  Dim x As Integer
  Dim y As Integer
  Dim Msg As Integer
  Dim sKopie As String
  Dim AttachMe As Variant
  Dim derAnhang As Variant, derAnhang2 As Variant, derAnhang3 As Variant
  Dim user As String
  Dim server As String
  Dim mailfile As String
  Dim sBlindKopie As String
  Dim vAn As Variant
  Dim vCopy As Variant
  Dim vBlind As Variant
  Dim sAnhang As String, sAnhang2 As String, sAnhang3 As String
  Dim sAnrede As Variant
  Dim sVorname As Variant
  Dim sNachname As Variant
  Dim tempAnrede As Variant
 
   
   On Error Resume Next
   
  ' Verbindung zum Mailserver aufbauen
 
  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)                        ' Emails zusammenbauen und rausschicken
  For i = 12 To cells(Rows.Count, 9).End(xlUp).Row
    If cells(i, 10) <> "ja" Then                                        'keine E-Mail, wenn "ja" in Spalte "geantwortet"
      vAn = cells(i, 9)
      sAnrede = Range("e" & i)                                          'Anrede aus Spalte e
      Select Case (sAnrede)
        Case "Herr":                                                    'Im Fall, dass Anrede "Herr" in Spalte e, dann schreibe "Sehr geehrter Herr"
          tempAnrede = "Sehr geehrter Herr"
        Case "Frau":
          tempAnrede = "Sehr geehrte Frau"                              'Im Fall, dass Anrede "Frau" in Spalte e, dann schreibe "Sehr geehrte Frau"
        Case "Sehr geehrte Damen und Herren":
          tempAnrede = "Sehr geehrte Damen und Herren"
        Case "Dear":
          tempAnrede = "Dear"                                           'Im Fall, dass Anrede "Dear" in Spalte e, dann schreibe "Dear"
      End Select
    sVorname = Range("f" & i)                                         'Vorname aus Spalte f
    sNachname = Range("g" & i)                                        'Nachname aus Spalte g
      If Sheets("Tabelle1").Range("h" & i).Value = "Deutsch" Then       'wenn in Spalte "h" "Deutsch" als Sprache steht, dann
        sText = tempAnrede & " " & sNachname & "," & Chr(10) & Chr(10) & Range("B4") & Chr(10)      'dann nehme die Anrede + Nachnamen + den Text aus Zelle "B4"
      Else
        sText = tempAnrede & " " & sVorname & "," & Chr(10) & Chr(10) & Range("D4") & Chr(10)       'sonst nehme Anrede + Vorname + Text aus Zelle "D4"
      End If
    sBetrifft = Range("B3")                                           ' Überschrift in Zelle b3
    sKopie = Range("D3")                                              ' Kopie der E-MAil an e-Mail Adresse aus Zelle "D3"
    sBlindKopie = Mid(vAn, 3)                                         ' schickt an alle Empfänger eine Blindkopie
    sAnhang = Range("B6")                                             ' Link aus Zelle b6
    sAnhang2 = Range("B7")                                            ' Link aus Zelle b7
    sAnhang3 = Range("B8")                                            ' Link aus Zelle b8
    If Len(sKopie) > 0 Then vCopy = Split(sKopie, " ; ")              ' cc Array
    If Len(sBlindKopie) > 0 Then vBlind = Split(sBlindKopie, " ; ")   'bcc Array
      Set doc = db.createdocument()
      doc.Form = "Memo"
      doc.sendto = vAn
      If Len(sKopie) > 0 Then doc.CopyTo = vCopy                        'cc 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)
        Set derAnhang2 = AttachMe.EMBEDOBJECT(1454, "", sAnhang2)
        Set derAnhang3 = AttachMe.EMBEDOBJECT(1454, "", sAnhang3)
        ',"Attachment" wird nicht benötigt
      End If
     
     
    '*******************************
      Set ws = CreateObject("Notes.NotesUIWorkspace")
      ' **durch das öffnen des Dokumentes durch NotesUIWorkspace**
      ' **erreicht man das die eingestellte Signatur aus den **
      ' **Lotus Notes Optionen eingefügt wird
      Call ws.EDITDOCUMENT(True, doc)
      Set uiDocument = ws.CURRENTDOCUMENT
      Call uiDocument.GOTOFIELD("Body")
      Call uiDocument.insertText(sText)
      Call uiDocument.Send(True)
      Call uiDocument.Close               'Schliesst das gesendete Formular
      Call uiDocument.Save(True, True)
      Set AttachMe = Nothing
      Set derAnhang = Nothing
      Set ws = Nothing
      Set doc = Nothing
   
    End If
  Next i
 
   ' Verbindung zum Mailserver löschen
Aufraeumen:
    On Error Resume Next
    Set db = Nothing
    Set session = Nothing
    Exit Sub
Fehler:
    Resume Aufraeumen
End If

End Sub




Viele Grüße
Benni

Peter Klett:

--- Zitat von: Benni1988 am 26.02.16 - 16:25:33 ---      Call ws.EDITDOCUMENT(True, doc)
      Set uiDocument = ws.CURRENTDOCUMENT
      Call uiDocument.GOTOFIELD("Body")
      Call uiDocument.insertText(sText)
      Call uiDocument.Send(True)
      Call uiDocument.Close               'Schliesst das gesendete Formular
      Call uiDocument.Save(True, True)

--- Ende Zitat ---

Den oberen Teil habe ich mir nicht näher angeschaut, aber der untere sieht grundsätzlich ganz gut aus. Mich wundert die Reihenfolge etwas. Ich würde das Dokument erst senden, dann speichern und dann schließen. Dass man das uiDocument nach dem Schließen noch speichern kann, verwundert mich etwas, möglicherweise dreht Notes selbst bei Ausführung das um (in Formelsprache gibt es soetwas jedenfalls). Ebenso wundert mich, dass jetzt angeblich das Senden über das uidoc mit Parameter funktionieren soll, was ursprünglich einen Fehler gebracht hat. Das Speichern des uidoc hat eigentlich auch keine Parameter.

Nach meinem Verständnis wäre es so richtig.

      Call ws.EDITDOCUMENT(True, doc)
      Set uiDocument = ws.CURRENTDOCUMENT
      Call uiDocument.GOTOFIELD("Body")
      Call uiDocument.insertText(sText)
      Call uiDocument.Send
      Call uiDocument.Save
      Call uiDocument.Close               'Schliesst das gesendete Formular

Benni1988:
Hallo Peter,

ja, aber es funktioniert einwandfrei.

Ja, von der Logik her, ist es im nachhinein echt komisch, änder ich die Reihenfolge allerdings auf erst senden und dann speichern, bekomme ich in Notes folgende Meldung
Sind Sie sicher? Diese Nachricht wurde bereits an einen oder mehrere Empfänger gesendet…“

Ich weiß zwar nicht warum, aber ich lasse es dann lieber so...

Grüße

Benni1988:
Hallo zusammen,

nachdem der Code jetzt gut funktioniert hat, stürtzt LN jetzt immer ab und es kommt folgende Widows-Meldung.


IBM Notes/Domino funktioniert nicht mehr

Problemdetails:
Problemereignisname: APPCRASH
Anwendungsname: NLNOTES.ExE
Anwendungsversion: 9.0.14.15158
Answendungszeitstempel: 557542 fc
Fehlermodulname: StackHash_26c4


Was bedeutet das? Wieso kommt der Fehler auf einmal?

Grüße
Benni

Tode:
Ein Notes- Crash produziert immer einen NSD im Verzeichnis "IBM_TECHNICAL_SUPPORT" im Data- Verzeichnis des Benutzers. Dort steht drin, warum der Client gecrashed ist (wenn man den NSD- Prozess nicht abwürgt und ihn wirklich bis zum Ende laufen lässt).

Ohne NSD keine Möglichkeit, eine Aussage zu treffen.
ACHTUNG: Das NSD enthält sehr viele System- Informationen. Also nicht einfach hier hochladen...

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln