Autor Thema: Variabler Dateipfad bei Mail über VBA an Lotus Notes  (Gelesen 9858 mal)

Offline Singer

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
Hallo Zusammen,

vorab ich hab bisher mit VBA fast keine Erfahrungen sammlen können hab aber auf der Arbeit derzeit eine Aufgabenstellung die sich meiner Auffassung nach gut darüber lösen lassen müsste und ich hoffe hier kann mir jemand dabei helfen  ;D.

Die Aufgabe ist es Daten für eine Serien-Mail aus einem Excel-Sheet auszulesen und diese zusammen mit einem Dateianhang über LotusNotes zu versenden.

Ich hab durch fleissiges Suchen bei Google mir folgenden Code zusammengestellt der auch perfekt funktioniert:

Code
Sub LotusMail(Empfaenger As String, Dateianhang As String, Inhalt As String)
    Dim Kopie_Empfänger As String, BlindKopie_Empfänger As String, Betreff As String
 
Const EMBED_ATTACHMENT = 1454
Dim server As String, mailfile As String
Dim session As Object
Dim DB As Object
Dim doc As Object
Dim rtitem As Object
Dim EmbeddedObject As Object
Dim Cell As Range
 
' Auslesen der Mail-DB
Set session = CreateObject("Notes.NotesSession")
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set DB = session.GETDATABASE(server, mailfile)
Set doc = DB.CreateDocument()
doc.Form = "New"
doc.SendTo = Empfaenger ' Adressaten übergeben
' doc.CopyTo = Me.Kopie_Empfänger.Value
' doc.BlindCopyTo = Me.BlindKopie_Empfänger.Value
doc.Subject = "Kundenliste Bestandsaktion"
doc.Body = Inhalt
Dateianhang = ThisWorkbook.Worksheets("Tabelle1").Range("f2").Value
Set rtitem = doc.CREATERICHTEXTITEM("ProjectDescription")
Set EmbeddedObject = rtitem.EMBEDOBJECT(EMBED_ATTACHMENT, "", Dateianhang) 'Dateianhang mit Pfad und Dateiname überschreiben
 'doc.SIGN = "0"
 'doc.ENCRYPT = "0"
 'doc.BlindCopyTo = ""
 'doc.DefaultMailSaveOptions = 0 '"1"
 'doc.MailSaveOptions = 0 '"1"
 'doc.DeliveryReport = "B"
doc.MailOptions = 0
doc.Importance = "1"
doc.logo = "Ltr_GliGruppeDE"
 'doc.ReturnReceipt = "1"
doc.principal = session.UserName
doc.viewicon = "75"
doc.FROM = session.UserName
doc.SAVEMESSAGEONSEND = True
doc.SaveOptions = 1
' doc.SecureMail = ""
doc.SenderTag = N
doc.useApplet = True
doc.CalendarProfile = True
 'SMTP-Originator
doc.PostedDate = Format$(Now, "dd.mm.yyyy") + " " + Format$(Now, "hh:nn:ss")
' Call doc.Save(False, False)
Call doc.Send(True, "")
Set doc = Nothing
Set DB = Nothing
End Sub
 
Sub Mail_Senden()
'Für jede Zelle in Bereich d2 bis zur letzen belegten Zelle in Spalte d wird eine Mail versandt.
Dim Cell As Range
For Each Cell In Range("d2:d" & Cells(Rows.Count, "d").End(xlUp).Row)
If Cell <> "" Then Call LotusMail(Cell.Value, "", Cell(1, -2) & " " & Cell(1, -1) & " " & Cell(1, 0) & vbLf & "," & Range("g2").Text & Cell(1, 2) & vbLf & Range("h1").Text)
Next
End Sub
Jetzt würde ich diesen aber gerne in der Hinsicht ergänzen, das der Dateianhang nicht über einen statischen Datenpfad angehängt wird, sondern das ich für jede Mail in dem Excel-Sheet eine andere Datei als Anhang angeben kann.

Es soll also folgendermassen laufen Empfänger 1 (definiert in Zelle D2) erhält Anhang 1 (definiert in Zelle I2), Empfänger 2 (definiert in Zelle D3) erhält Anhang 2 (definiert in Zelle I3),...usw.

Die Überlegung war den Code zu einer Schleife umzuarbeiten, ich hab aber ehrlich gesagt keinen Schimmer wo ich da ansetzen soll. Wäre Super wenn hier jemand einen Lösungsansatz hätte.

MFG Nico

« Letzte Änderung: 02.08.11 - 18:06:58 von Singer »
"Ein Mensch der spürt, wenn auch verschwommen, er müsste sich, genau genommen, im Grunde seines Herzens schämen, zieht vor es nicht genau zu nehmen."

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Variabler Dateipfad bei Mail über VBA an Lotus Notes
« Antwort #1 am: 02.08.11 - 16:30:15 »
Und warum verwendest Du dann nicht den dafür vorgesehenen Parameter "Dateianhang" in Sub LotusMail? Den plättest Du innerhalb von "LotusMail" ja gleich wieder ...

Und Deine Schleife hast Du ja in Sub Mail_Senden auch schon.

Bernhard

Offline Singer

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
Re: Variabler Dateipfad bei Mail über VBA an Lotus Notes
« Antwort #2 am: 02.08.11 - 16:45:41 »
Stimmt :D Wie war das mit dem Wald und den Bäumen.

Das heisst also das ich eigentlich nur
Code
Dateianhang = ThisWorkbook.Worksheets("Tabelle1").Range("f2").Value
dahingehend abändern müsste das er sich je "Durchlauf" der Schleife den nächsten Wert aus der Spalte F ziehen soll.
Das Problem ist wie mache ich das? Mir fehlen leider gewisse Grundlagen um zu wissen welche Ausdrücke ich wann wo einzusetzen habe. Wäre nett wenn mir da auf die Sprünge geholfen werden könnte :D
"Ein Mensch der spürt, wenn auch verschwommen, er müsste sich, genau genommen, im Grunde seines Herzens schämen, zieht vor es nicht genau zu nehmen."

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Variabler Dateipfad bei Mail über VBA an Lotus Notes
« Antwort #3 am: 02.08.11 - 16:49:10 »
Nein, diese Zeile musst Du löschen - Du übergibst den Wert ja bereits als Parameter.

Die eigentliche Änderung muss in Mail-Senden stattfinden. Und eine fertige Lösung wird Dir hier niemand liefern - aber gerne Hilfestellungen. Nur: Das Basiswissen musst Du Dir schon selbst aneignen, und ohne dem geht gar nichts.

Bernhard

PS: "Gefundener Code" ist in unserem Metier in etwa das Gleiche wie ein Minenfeld.

Offline Singer

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
Re: Variabler Dateipfad bei Mail über VBA an Lotus Notes
« Antwort #4 am: 02.08.11 - 17:32:55 »
Hallo Bernhard,

mmh Danke soweit. Nen Schubser in die Ecke wo ich mit meinen "Grundlagen-Studien" anfangen sollte um auf eine Lösung zu kommen wäre echt klasse, da ich leider nur noch bis morgen Zeit hab um das Projekt zu Ende zu bringen oder aufzugeben (was echt schade wäre). Es ist ja nicht so als ob ich kein Interesse hätte was dazu zu lernen, aber hier drängt (wie so häufig) echt die Zeit.

O.T.: Könntest du mir das mit dem Minenfeld mal näher erläutern? Es ist ja nicht so das ich behauptet hätte das ich den Code selber geschrieben hätte oder ich diesen für Geld anbiete. Alle Codeschnipsel die hier verwendet wurden stammen aus Forenbeiträgen mit einer ähnlichen Problemstellung und ich weiss nicht warum es problematisch ist diese für eigene Probleme zu nutzen und u.U. umzuarbeiten.

MFG Nico
"Ein Mensch der spürt, wenn auch verschwommen, er müsste sich, genau genommen, im Grunde seines Herzens schämen, zieht vor es nicht genau zu nehmen."

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Variabler Dateipfad bei Mail über VBA an Lotus Notes
« Antwort #5 am: 02.08.11 - 17:44:00 »
Nico, was meinst Du, was ich machen würde, wenn ich den Auftrag bekommen würde, bis morgen die BAB 8 von Bernau bis Landesgrenze Walserberg dreispurig auszubauen? Genau - ich würde abwinken.

Zum "Minenfeld":
Du musst die fett markierte Stelle mit dem gewünschten Zellenwert ersetzen:

Call LotusMail(Cell.Value, "", Cell(1, -2) & " " & Cell(1, -1) & " " & Cell(1, 0) & vbLf & "," & Range("g2").Text & Cell(1, 2) & vbLf & Range("h1").Text)

In der selben Zeile steht auch, wie man an andere Zellenwerte der aktuellen Excel-herankommt.
Das erkennst Du aber nicht. Du weisst daher auch nicht, was der gefundene Code wirklich macht. Vielleicht funkt er nebenbei die Masse des Playmates des Monats nach Moskau?

Bernhard

Offline Singer

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
Re: Variabler Dateipfad bei Mail über VBA an Lotus Notes
« Antwort #6 am: 02.08.11 - 18:06:08 »
ES KLAPPT! Muchas Gracias! Vielen, Vielen, Dank Bernhard!

Das sind so Momente wo man sich mal kräftig mit der flachen Hand an die Strin klatschen sollte...
Ich hab schon bemerkt das ich mit der Zeile den Empfänger und den Inhalt übergeben kann, Mir ist aber natürlich nicht in den Sinn gekommen das man hier evtl. auch den Dateianhang definieren könnte... Ich hab mich zu sehr auf den Eintrag
Code
Dateianhang = ThisWorkbook.Worksheets("Tabelle1").Range("f2").Value
eingeschossen.

Also nochmals vielen Dank!!! Kann dann sogar noch pünktlich Feierabend machen und ich hab was essentielles über VBA gelernt!!!

MFG Nico
"Ein Mensch der spürt, wenn auch verschwommen, er müsste sich, genau genommen, im Grunde seines Herzens schämen, zieht vor es nicht genau zu nehmen."

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Variabler Dateipfad bei Mail über VBA an Lotus Notes
« Antwort #7 am: 02.08.11 - 18:21:27 »
Naja, das war jetzt weniger ein Problem von VBA-Kenntnissen als vielmehr über (Programm-)Logik.

Schön, dass Du die Lösung gefunden hast - und vor allem im Endeffekt alleine  ;)

Bernhard

PS: Und immer an die Metapher mit dem Minenfeld denken ... Glaube mir - da ist was dran und es ist sehr ernst.

Offline Billgeiz

  • Frischling
  • *
  • Beiträge: 1
Re: Variabler Dateipfad bei Mail über VBA an Lotus Notes
« Antwort #8 am: 21.10.11 - 08:19:19 »
Hallo,

habe das gleich Problem. Habe den code so:
Call LotusMail(Cell.Value, Cell(2, 6), Cell(1, -2) & " " & Cell(1, -1) & "," & vbLf & "" & Cell(1, 0) & vbLf & "" & Range("g2").Text & Cell(1, 2) & vbLf & Range("h1").Text)
abgeändert.

Ich möchte damit erreichen, dass er ab f2 für jede Zeile den passenden Anhang verschickt.
Leider schickt er aber keinen Anhang mit.

Könnte mir bitte jemand Hilfestellung geben? Danke

Gruß Artur

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz