Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Boulbadaoui am 29.06.09 - 16:33:22

Titel: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 29.06.09 - 16:33:22
Hallo Zusammen,

will einen Seriendruck im Notes erstellen. habe eine Tabelle mit Addressen(Anrede, Name und E-Mailadresse)

Anrede Name E-Mail
Herr Becker a.becker@becker-online.de
Frau Lautz h.lautz@online-mz.de
Herr Schlarb b.schlarb@mv-online.de
.
.
.
. Usw (etwa 200 Adressen)
für jeden Empfänger liegt auf d:\Anhang eine Pdf Datei (Name.pdf) , die später als Anhang geschickt wird.

d:\Anhang\becker.pdf für Herrn Becker
d:\Anhang\Lautz.pdf für Frau Lautz
d:\Anhang\schlarb.pdf für Herrn Schlarb....usw

gibt's eine Möglicjkeit das zu realisieren?
Danke im Voraus
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: WernerMo am 29.06.09 - 16:36:30
Hallo Namenloser

Was meinst Du mit "habe eine Tabelle mit Adressen" ?

Wie eindeutig ist der Zusammenhang zwischen Dateiname und zweitem Teil der Emailadresse? Gibt es z.b. wirklich nur einen "Meyer"?

Gruß Werner
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 29.06.09 - 18:40:12
Danke für die schnelle Antwort:
also die Tabelle ist in excel(die E-Mail Adressen sind eindeutig), die Namen sind auch Eindeutig!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 30.06.09 - 07:44:03
Hallo,

War das nicht schon mal da, nur an anderer Stelle.

Serienmail (http://www.dominoforum.de/modules/newbb/viewtopic.php?topic_id=20525&forum=36)

Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: dirk_2909 am 30.06.09 - 08:24:52
…dann wird ihm ja schon geholfen …  :-X
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: klaussal am 30.06.09 - 08:32:20
... und wir kriegen umsonst die Lösung...  :-X
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 08:50:42
…dann wird ihm ja schon geholfen …  :-X


Danke für die Bemerkung, kannst du mir sagen, wo das steht!
ist das ein Vielleicht?
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: dirk_2909 am 30.06.09 - 09:22:31
Zitat
War das nicht schon mal da, nur an anderer Stelle.

Serienmail

Andreas

Zitat
2.3 Crosspostings in mehreren Webforen oder Newsgroups
     Es verstößt gegen die gültige Netiquette von Newsgroups und Onlineforen, Probleme zeitnah in mehreren verschiedenen Webforen gleichzeitig zu posten.
Bitte entscheidet Euch deshalb zunächst, in welchem Forum Ihr Euer Problem posten wollt, bevor Ihr ein Thema einstellt.
Bekommt Ihr in diesem Forum keine befriedigende Antwort, so könnt Ihr die Frage einige Tage später gerne in einem weiteren Forum stellen - mit Querverweis und Link auf den ursprünglichen Beitrag.
Sollte es einmal Gründe dafür geben, ein Problem gleichzeitig in verschiedenen Foren einzustellen, so ist in jedem Forum ein Querverweis mit Link auf die jeweils anderen Forumsbeiträge zu erstellen.
Genauso sind gefundene Lösungen in den jeweiligen Foren als Querverweis mit Link einzustellen.

.. in deinem Crossposting wurde alle Hinweise gegeben.
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 12:29:36
Danke für dein Hilfe Dirk!!!
muss man nur das nochmal definieren
Bekommt Ihr in diesem Forum keine befriedigende Antwort, so könnt Ihr die Frage einige Tage später gerne in einem weiteren Forum stellen - mit Querverweis und Link auf den ursprünglichen Beitrag.
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 30.06.09 - 12:36:30
Hallo,

Schon richtig.
Zitat
Bekommt Ihr in diesem Forum keine befriedigende Antwort, so könnt Ihr die Frage einige Tage später gerne in einem weiteren Forum stellen - mit Querverweis und Link auf den ursprünglichen Beitrag.

Nur frage ich einmal nur so,
Wo ist denn dann der Querverweis mit Link?


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 12:42:12
Hallo Andreas,
ist die Frage für mich oder Dirk?
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 30.06.09 - 12:46:49
Hallo,

In solchen Faellen eigentlich immer fuer denjenigen der fragt.  ;)


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 12:48:50
Danke nochmal,
es ist so kompliziert Hilfe zu bekommen? Danke nochmal Merci
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: klaussal am 30.06.09 - 12:52:21
Nein, das nicht, aber ein paar "Spielregeln", denen Du zugestimmt hast, sollte mann/frau schon beachten.
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: dirk_2909 am 30.06.09 - 12:53:27
Aber damit du jetzt weiterkommst:

1. mit LS die Excel-Datei Zeilenweise parsen
2. Dort anhand des Namens die PDF-Datei ermitteln
3. Entsprechende Mail erstellen
4. Felder befüllen
5. Mail versenden

Lösungsansätze
zu 1. CreateObject("Excel.Application")
zu 2. …
zu 3. Set doc = db.CreateDocument
zu 4. Set rtitm = doc. … / EmbedObject
zu 5. doc.Send

Der rest steht hier im Forum bzw. in der Designerhilfe - dort sind auch genügend Beispiele
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 13:50:57
Danke,
habe folgendes gefunden,

Sub testmail()
Dim i, empfänger, anlagen, titel, mailtext, An
Dim Entwurf As Boolean
Dim s_empfänger As String, s_anlagen As String
   
    empfänger = Range("A3").CurrentRegion
    anlagen = Range("C3").CurrentRegion
    titel = Range("E3").Value
    mailtext = Range("G3").Value
    Entwurf = True
   
    For Each An In empfänger
    s_empfänger = s_empfänger & An & ","
    Next
   
   
    Call SendNotesMail((titel), (anlagen), (s_empfänger), (mailtext), True, Entwurf)
End Sub




Sub SendNotesMail(Subject As String, ArrAttachment As Variant, Recipient As String, BodyText As String, SaveIt As Boolean, Entwurf As Boolean)
 'Set up the objects required for Automation into lotus notes
        Dim Maildb As Object 'The mail database
        Dim UserName As String 'The current users notes name
        Dim MailDbName As String 'THe current users notes mail database name
        Dim MailDoc As Object 'The mail document itself
        Dim AttachME As Object 'The attachment richtextfile object
        Dim Session As Object 'The notes session
        Dim EmbedObj As Object 'The embedded object (Attachment)
        Dim Attachment As Variant
        'Attachment = "anlagen"
       
        'Start a session to notes
       
        Set Session = CreateObject("Notes.NotesSession")
        'Get the sessions username and then calculate the mail file name
        'You may or may not need this as for MailDBname with some systems you
        'can pass an empty string
       
        UserName = Session.UserName
        MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
        'Open the mail database in notes
        Set Maildb = Session.GETDATABASE("", MailDbName)
         If Maildb.IsOpen = True Then
                    'Already open for mail
         Else
                 Maildb.OPENMAIL
         End If
        'Set up the new mail document
        Set MailDoc = Maildb.CREATEDOCUMENT
        MailDoc.Form = "Memo"
        MailDoc.sendto = Recipient
        MailDoc.Subject = Subject
        MailDoc.body = BodyText
        MailDoc.SAVEMESSAGEONSEND = SaveIt
       
        'Set up the embedded object and attachment and attach it
        For Each Attachment In ArrAttachment
        If Attachment <> "" Then
            Set AttachME = MailDoc.CREATERICHTEXTITEM(Attachment)

   'ab hier meldet Excel "Laufzeitfehler:7225" =File anlagen not found               
               
                Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
                MailDoc.CREATERICHTEXTITEM (anlagen)
        End If
        Next
       
       
        'Send the document
        If Entwurf Then
            Call MailDoc.Save(True, True)
        Else
            MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
            MailDoc.Send 0, Recipient
        End If
       
        'Clean Up
        Set Maildb = Nothing
        Set MailDoc = Nothing
        Set AttachME = Nothing
        Set Session = Nothing
        Set EmbedObj = Nothing
End Sub
______________________________________

'ab hier meldet Excel "Laufzeitfehler:7225" =File anlagen not found               
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 30.06.09 - 13:59:34
Hallo,

Bersuch mal bei

Code
Set AttachME = MailDoc.CREATERICHTEXTITEM(Attachment)

das Wort Attachement in Anfuehrungszeichen zu schreiben (und nicht das Objekt verwenden von der For Each Schleife), da CreateRichTextItem ein Feldname als String uebergeben werden muss.

%EDIT
An die Designer-Hilfe in Notes kommst Du aber heran.
Da kann man diese Sachen nachlesen.


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 14:38:00
DANKE;
ICH BEKOMME ABER GLEICHE FEHLERMELDUNG!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Thomas Schulte am 30.06.09 - 14:48:06
Was auch logisch ist, weil du mit Sicherheit keine Datei mit dem Namen Attachment auf deinem Rechner hast.

Andreas hat vollkommen recht. Les doch einfach zu den Befehlen die du da ausführst die Designer Hilfe durch.
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 15:04:17
Danke für den Hinweis,
wie im Betreff steht: personalisierte Anhang(pro Mailadd ein Anhang)
siehe anlagen = Range("C3").CurrentRegion (Teil1)

Teil 2:
Dim Maildb As Object 'The mail database
        Dim UserName As String 'The current users notes name
        Dim MailDbName As String 'THe current users notes mail database name
        Dim MailDoc As Object 'The mail document itself
        Dim AttachME As Object 'The attachment richtextfile object
        Dim Session As Object 'The notes session
        Dim EmbedObj As Object 'The embedded object (Attachment)
        Dim Attachment As Variant
verweist auf die spalte Anlagen
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: DAU-in am 30.06.09 - 15:17:33
Was willst du damit sagen?
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Thomas Schulte am 30.06.09 - 15:25:22
Dein Fehler ist immer noch dersselbe. In deiner Variable attachment steht was drin, was KEINE Entsprechung zu einer Datei und einem Pfad auf deinem Dateisystem hat. Schmeiß deinen debugger in Excel an und schau dir den Wert da drin an.

Der wird vermutlich "anlagen" heisen, weil du auch vermutlich die erste Zeile deiner Excel Datei mit verwurstest. Und damit verwendest du die Überschrift zum Erstellen eines Mails.
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 16:11:29
Danke nochmal und das stimmt auch wie du sagst: c3 hat die Überschrift: anlagen

wie kann ich das sauber lösen!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 30.06.09 - 16:15:06
Einfachste Variante.

In dem Du einfach mal so festlegst, dass in der ersten Zeile der Excel-Datei die Ueberschrift steht (zu stehen hat) und Dein Code einfach erst in der zweiten Zeile anfaengt die Daten auszulesen.


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 16:26:40
Vielen Dank,
erste Lauf (erste Zeile hat funktioniert, leider beim zweiten lauf, excel meldet

Laufzeitfehler 7368: Rich text item u:\info\schlarb.pdf alredy exists!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: DAU-in am 30.06.09 - 16:34:21
Vielen Dank,
erste Lauf (erste Zeile hat funktioniert, leider beim zweiten lauf, excel meldet

Laufzeitfehler 7368: Rich text item u:\info\schlarb.pdf alredy exists!

dann ist dort schon ein File mit gleichem Namen.

dann weisst du jetzt, dass der erste Lauf funktioniert hat.


Edith: ist das oben der gesamte Code, den du da hast?
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 18:55:59
Hallo,
Die Datei existiet schon, soll auch als Anhang geschickt! siehe Teil1, Teil 2.
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: DAU-in am 30.06.09 - 19:30:55
erste Lauf (erste Zeile hat funktioniert, leider beim zweiten lauf, excel meldet

Laufzeitfehler 7368: Rich text item u:\info\schlarb.pdf alredy exists!

Ich  bin jetzt nicht der Programmiercrack, aber wenns im ersten Lauf durchläuft und beim 2. lauf meckert, dass dass etwas bereits da ist mit einer Pfadangabe, sieht es für mich so aus, dass du beim ersten Mal ein File abspeicherst(dein Maildokument?) und beim zweitenmal er halt einen anderen Filenamen haben will.
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 19:45:50
Danke,
wenn du das anschaust:
For Each Attachment In ArrAttachment
        If Attachment <> "" Then
            Set AttachME = MailDoc.CREATERICHTEXTITEM(Attachment)       
               
                Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
                MailDoc.CREATERICHTEXTITEM (anlagen)
        End If
        Next
die Schleife soll weiter zum next"Attachment! laufen!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: DAU-in am 30.06.09 - 21:38:43
Kurz gefragt:

an welcher Zeile tritt der Laufzeitfehler auf?
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 30.06.09 - 23:55:25
Hallo,
nachdem ersten Lauf, soll die Schleife auf Next gehen und bei der Zeile

Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment") kommt die Fehlermeldung!
Laufzeitfehler 7368: Rich text item u:\info\schlarb.pdf alredy exists!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: DAU-in am 01.07.09 - 00:26:15
Dann kontrolliere dieses Dokument. Und kontrolliere die Namen der Anhänge.

Speicherst du die Mails ab oder verschickst du die? Wenn du die Mails abspeicherst, un d im 2 Lauf wieder darauf zugreifst, kann es sein, dass das Ergebnis des ersten Laufes der Durchführung des 2. Laufes im Wege steht.

Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 01.07.09 - 08:53:39
Danke,
will ich die gern, wenn es geht direkt verschicken!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: dirk_2909 am 01.07.09 - 09:52:01
Zitat
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment") kommt die Fehlermeldung!
Prüf doch vorher ab, ob die Datei existiert, wenn ja dann lösche diese o.ä.

Zitat
will ich die gern, wenn es geht direkt verschicken!
Dann verschicke die Mail nach jedem Lauf und lösche alle Objekte und Dateien, die du erzeigst hast
und erstelle sie im neuen Lauf neu
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 01.07.09 - 10:23:34
Danke,
habe folgende Änderung gemacht, daß erst verschicken, bereingen und dann die Schleife.
 For Each Attachment In ArrAttachment
        If Attachment <> "" Then
            Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")

                             
                 Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment)
                 MailDoc.CREATERICHTEXTITEM (Attachment)
       
                 End If
                 If Entwurf Then
            Call MailDoc.Save(True, True)
        Else
            MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
            MailDoc.Send 0, Recipient
        End If
        'Clean Up
        Set Maildb = Nothing
        Set MailDoc = Nothing
        Set AttachME = Nothing
        Set Session = Nothing
        Set EmbedObj = Nothing

        Next
       
       
End Sub

Trotzdem bekomme ich eine Fehlermeldung "Laufzeitfehler 91: (Objektvariable oder with-Blockvariable nicht festgelegt)
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 01.07.09 - 10:35:37
Hallo,

Ist ja nun ein anderer Fehler als vorher (oder habe ich etwas verpasst).

Vor allem waere interessant, an welcher Stelle dieser Fehler ausgeloest wird?


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 01.07.09 - 10:41:27
hallo,
immer noch beim zweiten Ablauf

Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 01.07.09 - 10:45:16
Na der Fehler kommt ganz einfach daher, dass Du hier Deine benoetigten Objekte platt machst.

Code
        Set Maildb = Nothing
        Set MailDoc = Nothing
        Set AttachME = Nothing
        Set Session = Nothing
        Set EmbedObj = Nothing

Da dies innerhalb der For ... Each-Schleife passiert, ist es nur logisch, dass dieser Fehler auftaucht.


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 01.07.09 - 13:55:25
Ich habe mir mal die Problematik intensiver angesehen.

Diesen Code, erhebt keinen Anspruch auf Vollstaendigkeit.
(Schon vorab, es ist keine Fehlerbehandlung  vorhanden. Diese muesste noch eingebaut werden)
- Code ist in der Datei mail_aus_excel.txt

In der folgenden Konstellation funktioniert dieser Code bei mir ohne Probleme.
Excel 2000
LN Client 7.0.1
LN-Server 7.0.3

Im VBA-Editor muss ueber "Extras - Verweise" der Verweis auf die "Lotus Domino Objects" aktiviert sein. (siehe Screenshot)


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 01.07.09 - 14:17:46
Danke,
bekomme ich keine Fehlermeldung, leider schickt notes keine Mail!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 01.07.09 - 14:25:13
Schon mal mit dem VBA-Debugger durch den Code gegangen?


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 01.07.09 - 14:43:10
JA
leider kann ich keine Fehler feststellen, außer kommt er nicht bis

Function CreateAttachement(n_docM As NotesDocument, sFileName As String) As Boolean
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 01.07.09 - 15:06:12
Ist n_docMail vorhanden?
Ist n_dbMail vorhanden und geoeffnet?

Wenn der Code nicht bis CreateAttachement(...) kommt, dann steigt der Code an einer Stelle vorher schon aus oder es sind die entsprechenden notwendigen Kriterien nicht erfuellt.


Andreas

P.S.:
Bitte jetzt nicht falsch verstehen, aber seit wann programmierst Du denn mit VBA?
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 01.07.09 - 15:20:13
n_docmail ist corhanden
n_dbMail vorhanden und wird auch geöffnet.


Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 01.07.09 - 15:34:21
Und durch die With-Anweisung geht er auch ohne weiteres durch?

Wenn ja, dann sollte er auch die angesprochene Funktion aufrufen.


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 01.07.09 - 16:25:56
ja die with-Anweisung läuft einwandfrei!

Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 02.07.09 - 07:36:33
Und auch immer mit F8 (Einzelschritt) im Debugger durch den Code gegangen.
Oder setze doch mal einen Haltepunkt beim Aufruf der Funktion.

Anbei noch eine kleine Aenderung des Codes.

Die Zeile zum Senden der Mail muss richtig lauten
Code
Call n_docMail.Send(False)
und nicht wie angegeben
Code
Call n_docMail.Send(Fase)

%EDIT
Den Code habe ich auch nochmal mit folgenden Voraussetzungen versucht:
- Vista Business
- Office 2007
- LN-Client 8.0.2 (1x Client nicht gestartet und 1x Client gestartet)

und er lief problemlos.


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 02.07.09 - 10:28:42
Hallo und Danke,

soll die Call n_docMail.Send funktion erst definiert oder?
im text vermisse ich eine Call n_docMail.Send Funktion!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 02.07.09 - 10:33:43
Code
                ' Erstellen des Dateianhanges
                If CreateAttachement(n_docMail, sFile) Then
                    
                    ' Anhang erfolgreich erstellt
                    ' Mail senden
                    Call n_docMail.Send(False)
                    
                End If

Das Call n_docMail.Send(False) ist eine Funktion der Klasse "NotesDocument" und muss nicht definiert werden.
Diese wird im Code nur dann aufgerufen, wenn die "eigene"
Funktion "CreateAttachement(n_docMail, sFile)" den Wert "True" zurueckliefert. (also erfolgreich durchlaufen wurde.


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: eknori am 02.07.09 - 10:41:31
Zitat
CreateAttachement
Ist das ein Tippfehler, oder ist das korrekt ?
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 02.07.09 - 10:46:16
@eknore (Ulrich)

Schreibfehler beim Erstellen der eigenen VBA-Routine (also kein Notes),
da ich diesen Code einfach mal nur auf die schnelle runtergeschrieben habe.

Hatte in einem vorherigen Post auch angedeutet.
Zitat
Diesen Code, erhebt keinen Anspruch auf Vollstaendigkeit.


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 02.07.09 - 11:08:55
Ich glaube es liegt daran, daß kein Attachment erzeugt wird!
hier meine Änderung
___________________________

ist die Schreibweise : StrFile = sh.Range("E" & CStr(intRow)) in excel auf die Spalte E : U:\anhang\name.pdf richtig?

Sub hauptteil()
Dim sh As Worksheet
Dim strName As String 'Empfänger-Name
Dim strAdress As String 'E-Mail Addresse des Empfänger
Dim StrFile As String 'Personalisierten Anhang
Dim StrThema As String 'E-Mail Thema
Dim StrTxt As String 'E-Mail Anhang
Dim intRow As Integer

Set sh = ThisWorkbook.ActiveSheet
If sh Is Nothing Then End
For intRow = 1 To 3 'Schleife über alle Rows
strName = sh.Range("C" & CStr(intRow)) & " " & sh.Range("A" & CStr(intRow))
strAdress = sh.Range("D" & CStr(intRow))
StrFile = sh.Range("E" & CStr(intRow))
StrThema = sh.Range("F" & CStr(intRow))
StrTxt = sh.Range("G" & CStr(intRow))
Call SendMailWithFile(strAdress, strName, StrFile, StrTxt, StrThema)

If Trim(strName) = "" Then Exit For
Next

End Sub
Sub SendMailWithFile(ByVal sAdress As String, ByVal sUser As String, sFile As String, sTxt As String, sThema As String)

   'Sub SendMailWithFile(ByVal sAdress As String, ByVal sUser As String, sFile As String)

    Dim n_ses As New NotesSession
    Dim n_dbNames As NotesDatabase
    Dim n_dbMail As NotesDatabase
    Dim n_docMail As NotesDocument
   
    Dim varMailFile As Variant
   
    ' Notes-Session
    If n_ses Is Nothing Then Exit Sub
    'if 1 und exit
    n_ses.Initialize
   
    ' NAB oeffnen, um den Mailserver und das Mailfile des aktuellen
    ' Benutzers zu ermitteln (von hier wird die Mail gesendet)
    Set n_dbNames = n_ses.GetDatabase("valnotes", "agress.nsf")
'agress.nsf =Absender Datenbank
    If n_dbNames Is Nothing Then Exit Sub
    'if 2 und exit
    If n_dbNames.IsOpen Then
     'if 3
     
        ' gefundene Angaben in Server und Dateiname zerlegen
        varMailFile = Split(GetMailFile(n_ses.UserName, n_dbNames), "~")
        If IsArray(varMailFile) Then
        'if 4
            If LCase(Right(Trim(varMailFile(1)), 4)) <> ".nsf" Then
                varMailFile(1) = Trim(varMailFile(1)) & ".nsf"
            ' if 5
            End If
            'end if 5
           
            ' Mailfile oeffnen
            Set n_dbMail = n_ses.GetDatabase(varMailFile(0), n_ses.UserName)
           
            ' Mailfile geoeffnet ?
            If n_dbMail Is Nothing Then Exit Sub
            'if 6 und exit
            If n_dbMail.IsOpen Then
            'if 7
                ' Mailfile erfolgreich geoeffnet => Mail mit Anhang erstellen
                Set n_docMail = n_dbMail.CreateDocument
                If n_docMail Is Nothing Then Exit Sub
                'if 8 und exit
                ' Maildokument einstellen
                With n_docMail
               
                    Call .ReplaceItemValue("Form", "Memo")
                    Call .ReplaceItemValue("Subject", "hier kommt das Thema rein")
                    Call .ReplaceItemValue("SendTo", sAdress)
                    Call .ReplaceItemValue("Principal", sAdress)
                   
                End With
               
                ' Erstellen des Dateianhanges
                If CreateAttachement(n_docMail, sFile) Then
                    'if 9
                    ' Anhang erfolgreich erstellt
                    ' Mail senden
                    Call n_docMail.Send(False)
                   
                End If 'end if 9
               
            End If 'end if 7
           
        End If 'end if 4
       
    End If 'end if 3
   
End Sub

Function GetMailFile(ByVal sSearch As String, n_dbN As NotesDatabase) As String

    ' returns the mail-server and the mail-file of the given user (e-mail address)
    ' format of the return-string is <mail-server~mail-file>
   
    Dim n_vwUser As NotesView
    Dim n_docUser As NotesDocument
   
    GetMailFile = ""
   
    ' Ansicht aller Notes-User einstellen
    Set n_vwUser = n_dbN.GetView("($Users)")
    If n_vwUser Is Nothing Then Exit Function
   
    ' Dokument des angegenenen Benutzers ermitteln
    ' aus deisem wird der Mailserver und Mailfile ermittelt
    Set n_docUser = n_vwUser.GetDocumentByKey(LCase(Trim(sSearch)), True)
    If n_docUser Is Nothing Then Exit Function
   
    GetMailFile = n_docUser.GetItemValue("MailServer")(0) & "~" & n_docUser.GetItemValue("MailFile")(0)
   
End Function

Function CreateAttachement(n_docM As NotesDocument, sFileName As String) As Boolean

    ' Erstellt den Anhang in der zu sendenden Mail
    ' und schreibt den Mailtext
   
    Dim n_rtBody As NotesRichTextItem
    Dim n_eoFile As NotesEmbeddedObject
   
    CreateAttachement = False
   
    ' create the Body-Field
    Set n_rtBody = n_docM.CreateRichTextItem("Body")
    If n_rtBody Is Nothing Then Exit Function
   
    ' text of the mail
    Call n_rtBody.AddNewLine(1)
    Call n_rtBody.AppendText("1. Zeile text")
    Call n_rtBody.AddNewLine(1)
    Call n_rtBody.AppendText("2. Zeile text")
    Call n_rtBody.AddNewLine(3)
   
    ' create attachement
    Set n_eoFile = n_rtBody.EmbedObject(1454, "", sFileName)
    If n_eoFile Is Nothing Then Exit Function
   
    CreateAttachement = True
   
End Function
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: ascabg am 02.07.09 - 11:41:57
Zitat
ist die Schreibweise : StrFile = sh.Range("E" & CStr(intRow)) in excel auf die Spalte E : U:\anhang\name.pdf richtig?
Prinzipiell Ja. Jedoch - ist mir auch erst wieder im Nachhinein eingefallen koennte man auch schreiben
Code
strFile = sh.Range("E" & CStr(intRow)).Value

Zitat
Ich glaube es liegt daran, daß kein Attachment erzeugt wird!
Wie muss man das jetzt verstehen?

Wenn Du in der betreffenden Spalte ("E") den Pfad zu der Datei hinterlegt hast und diese Datei auch vorhanden sein, so sollte durch die Zeile
Code
Set n_eoFile = n_rtBody.EmbedObject(1454, "", sFileName)
auch ein entsprechender Dateianhang in der Mail erzeugt werden.
Frage:
Liegt die Datei auch in diesem Verzeichnis (ist diese vorhanden)?
Was passiert bei der Ausfuehrung des Codes?


Andreas
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 02.07.09 - 12:41:05
ja die Dateien sind vorhanden und liegen richtig auf dem Verzeichniss, wie im Spalte E beschrieben!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 03.07.09 - 12:26:46
Hallo,
ist die schreibeweise richtig:
Set n_dbNames = n_ses.GetDatabase("valnotes", "mboulbad.nsf")
'Valnotes=Domino_Server
'mboulbad.nsf=Maildatenbank des Absender

___________________________________
es wird auch nicht   zu: Function GetMailFile(ByVal sSearch As String, n_dbN As NotesDatabase) As String  springen!
Titel: Re: Serienmail(Serienbrief) mit personalisierte-Anhang
Beitrag von: Boulbadaoui am 03.07.09 - 14:57:38
Danke an Alle
Dank an Andreas,
es hat wunderbar funktioniert
Merci vielmals! ;)