Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Link per VBA in Lotus Notes message einfügen

Link per VBA in Lotus Notes message einfügen
08.12.2016 11:51:04
Sven
Hi at all,
Ich hab folgendes Problem. Ich möchte per VBA in Excel E-Mails mit Lotus Notes versenden, das _
Versenden und einfügen von Nachrichten klappt mit den bisherigen Code. Leider wird der Link nur _ als Text ausgegeben und nicht als Link

Sub NotesMail()
Dim strEmpfaenger, strBetreff, strText, strcc, strbcc As String
Dim strFile As String
Dim Link As String
Link = ThisWorkbook.Worksheets(1).Cells(2, 5).Value
strEmpfaenger = "Sven.Schmitt@xxxxxxxxx.com"
strBetreff = "BetreffText"
strText = "Test"
strText = "Die neuen Pi's sind verfügbar im anhang deine Werke zum aktualisieren" & " " & Link
strFile = "D:\logo.sys" 'ActiveDocument.FullName
NotesMailSend strEmpfaenger, strBetreff, strText, strcc, _
strbcc, strFile
End Sub

Function NotesMailSend(strEmpfaenger As Variant, strBetreff As Variant, _
strText As Variant, strcc As Variant, strbcc As Variant, strFilename As _
String)
' Dimensionierung der Objektvariablen
Dim objNotes As Object, objNotesDB As Object, objNotesMailDoc As Object
Dim SendItem, NCopyItem, BlindCopyToItem, i As Integer, rtitem
Dim msg As String
'
' Zuweisung der Objektvariablen
'On Error GoTo ExitF
Set objNotes = GetObject("", "Notes.Notessession")
Set objNotesDB = objNotes.GETDATABASE("", "")
' Öffnen der Standard-Maildatenbank / Erstellen neues Maildokument
Call objNotesDB.OPENMAIL
Set objNotesMailDoc = objNotesDB.createdocument
objNotesMailDoc.Form = "Memo"
Call objNotesMailDoc.Save(True, False)
Set SendItem = objNotesMailDoc.APPENDITEMVALUE("SendTo", "")
Set NCopyItem = objNotesMailDoc.APPENDITEMVALUE("CopyTo", "")
Set BlindCopyToItem = objNotesMailDoc.APPENDITEMVALUE("BlindCopyTo", "")
objNotesMailDoc.SendTo = strEmpfaenger
objNotesMailDoc.Subject = strBetreff
Set rtitem = objNotesMailDoc.CREATERICHTEXTITEM("Body")
objNotesMailDoc.Body = strText
rtitem.ADDNEWLINE (1)
Call rtitem.EMBEDOBJECT(1454, "", strFilename)
' Mail zustellen
Call objNotesMailDoc.Save(True, False)
Call objNotesMailDoc.SEND(False)
objNotesMailDoc.RemoveItem ("DeliveredDate")
Call objNotesMailDoc.Save(True, False)
' Nachricht an Benutzer
msg = "Die E-Mail wurde erfolgreich versendet!"
MsgBox msg, vbInformation, "Notesmail versenden..."
' Objektvariablen zurücksetzen
Call objNotes.Close
' Leider funktioniert der Quit-Befehl aus irgend einem Grund nicht.
'objNotes.Quit
Set objNotes = Nothing
ExitF:
End Function

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Link per VBA in Lotus Notes message einfügen
08.12.2016 14:07:24
Jürgen
Hallo Sven,
dazu musst Du den Dateinamen in einen URL-konformen String umwandeln. Das gelingt am einfachsten mit nachstehender Deklaration und Funktion:
Private Const MAX_PATH As Long = 260
Private Const ERROR_SUCCESS As Long = 0
Private Declare Function UrlCreateFromPath Lib "Shlwapi" _
Alias "UrlCreateFromPathA" _
(ByVal pszPath As String, _
ByVal pszUrl As String, _
pcchUrl As Long, _
ByVal dwReserved As Long) As Long
Private Function FilenameToURL(ByVal sPath As String) As String
Dim sUrl As String
Dim dwSize As Long
If Len(sPath) > 0 Then
sUrl = Space$(MAX_PATH)
dwSize = Len(sUrl)
If UrlCreateFromPath(sPath, _
sUrl, _
dwSize, _
0&) = ERROR_SUCCESS Then
FilenameToURL = Left$(sUrl, dwSize)
End If  'If UrlCreateFromPath
End If   'If Len(sUrl) > 0
End Function
Damit würde Deine Codezeile lauten:
rtitem.AppendText = FilenameToURL(strFilename)
Gruß, Jürgen
Anzeige
AW: Link per VBA in Lotus Notes message einfügen
08.12.2016 16:01:37
Sven
Hallo Jürgen,
erstmal vielen Dank für deine Antwort und Hilfe.
Leider versteh ich den Code nicht ganz im genauen die Syntax mein VBA Verstndnis ist nicht ganz so tief :-) . Kopiere ich die Function einfach in das Modul und erstetze die letzte code Zeile von dir mit meiner Link Variable.
AW: Link per VBA in Lotus Notes message einfügen
08.12.2016 17:15:15
Jürgen
Hallo Sven,
genau - vorausgesetzt, ich habe richtig verstanden, was Du wolltest. Ich nahm an, dass Du statt der Datei einen Link auf die Datei versenden wolltest. Dann ist schon die richtige Variable in meiner letzten Zeile - oder?
Wenn Du etwas anderes erreichen wolltest: bitte näher erläutern.
Gruß, Jürgen
Anzeige
AW: Link per VBA in Lotus Notes message einfügen
09.12.2016 09:39:54
Sven
Nee genau das ist mein Vorhaben ^^ Ich hab mal deinen Code hinzugefügt und die Variable ersetzt _ leider kommt in der lletzten Zeile der

Private Function FilenameToURL "End Function
" der Fehler Objekt erforderlich.
Weis gerade nicht was ich falsch gemacht habe?
Private Const MAX_PATH As Long = 260
Private Const ERROR_SUCCESS As Long = 0
Private Declare Function UrlCreateFromPath Lib "Shlwapi" _
Alias "UrlCreateFromPathA" _
(ByVal pszPath As String, _
ByVal pszUrl As String, _
pcchUrl As Long, _
ByVal dwReserved As Long) As Long
Sub NotesMail()
Dim strEmpfaenger, strBetreff, strText, strcc, strbcc As String
Dim strFile As String
Dim Link As String
Dim E_MailAdress As String
Dim Bearbeiter As String
'finish = 1
'x = 2
'
''MsgBox (Date)
'
'Do Until finish = Empty
'
'Bearbeiter = ThisWorkbook.Worksheets(1).Cells(x, 6).Value
'
'y = ThisWorkbook.Worksheets(2).Cells.Find(What:=Bearbeiter, LookIn:=xlFormulas, LookAt _
' :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
' False, SearchFormat:=False).Row
'
'E_MailAdress = ThisWorkbook.Worksheets(2).Cells(y, 2).Value
'
'If Bearbeiter = ThisWorkbook.Worksheets(1).Cells(x, 6).Value Then
'n x = ThisWorkbook.Worksheets(1).Cells(x, 6).Value
'End If
'
'
'
'
'finish = finish + 1
'
'Loop
strFilename = ThisWorkbook.Worksheets(1).Cells(2, 5).Value
rtitem.AppendText = FilenameToURL(strFilename)
'strEmpfaenger = E_MailAdress
strEmpfaenger = "Sven.2.xxxxxx.com"
strBetreff = "KPI" & Date
strText = "Test"
strText = "Hallo Barbara,die neuen Pi's sind verfügbar im anhang deine Werke zum aktualisieren" & " " & "URL LinK"
strFile = "D:\logo.sys" 'ActiveDocument.FullName
NotesMailSend strEmpfaenger, strBetreff, strText, strcc, _
strbcc, strFile
End Sub
Function NotesMailSend(strEmpfaenger As Variant, strBetreff As Variant, _
strText As Variant, strcc As Variant, strbcc As Variant, strFilename As _
String)
' Dimensionierung der Objektvariablen
Dim objNotes As Object, objNotesDB As Object, objNotesMailDoc As Object
Dim SendItem, NCopyItem, BlindCopyToItem, i As Integer, rtitem
Dim msg As String
'
' Zuweisung der Objektvariablen
'On Error GoTo ExitF
Set objNotes = GetObject("", "Notes.Notessession")
Set objNotesDB = objNotes.GETDATABASE("", "")
' Öffnen der Standard-Maildatenbank / Erstellen neues Maildokument
Call objNotesDB.OPENMAIL
Set objNotesMailDoc = objNotesDB.createdocument
objNotesMailDoc.Form = "Memo"
Call objNotesMailDoc.Save(True, False)
Set SendItem = objNotesMailDoc.APPENDITEMVALUE("SendTo", "")
Set NCopyItem = objNotesMailDoc.APPENDITEMVALUE("CopyTo", "")
Set BlindCopyToItem = objNotesMailDoc.APPENDITEMVALUE("BlindCopyTo", "")
objNotesMailDoc.SendTo = strEmpfaenger
objNotesMailDoc.Subject = strBetreff
Set rtitem = objNotesMailDoc.CREATERICHTEXTITEM("Body")
objNotesMailDoc.Body = strText
rtitem.ADDNEWLINE (1)
Call rtitem.EMBEDOBJECT(1454, "", strFilename)
' Mail zustellen
Call objNotesMailDoc.Save(True, False)
Call objNotesMailDoc.SEND(False)
objNotesMailDoc.RemoveItem ("DeliveredDate")
Call objNotesMailDoc.Save(True, False)
' Nachricht an Benutzer
msg = "Die E-Mail wurde erfolgreich versendet!"
MsgBox msg, vbInformation, "Notesmail versenden..."
' Objektvariablen zurücksetzen
Call objNotes.Close
' Leider funktioniert der Quit-Befehl aus irgend einem Grund nicht.
'objNotes.Quit
Set objNotes = Nothing
ExitF:
End Function
Private Function FilenameToURL(ByVal sPath As String) As String
Dim sUrl As String
Dim dwSize As Long
If Len(sPath) > 0 Then
sUrl = Space$(MAX_PATH)
dwSize = Len(sUrl)
If UrlCreateFromPath(sPath, _
sUrl, _
dwSize, _
0&) = ERROR_SUCCESS Then
FilenameToURL = Left$(sUrl, dwSize)
End If  'If UrlCreateFromPath
End If   'If Len(sUrl) > 0
End Function

Anzeige
AW: Link per VBA in Lotus Notes message einfügen
09.12.2016 17:21:21
Jürgen
Hallo Sven,
die Zeile

rtitem.AppendText = FilenameToURL(strFilename)
hast Du in die falsche Funktion gesetzt. "rtitem" ist doch das Richtext-Item, in das Du den Mailtext hineinfügst. Die Zeile gehört also in die Funktion "NotesMailSend", z. B. unter die Zeile

rtitem.ADDNEWLINE (1)
Gruß, Jürgen
AW: Link per VBA in Lotus Notes message einfügen
12.12.2016 10:26:51
Sven
Hallo Jürgen, blöder fehler ^^ hab das geändert. Die Funktion läuft jetzt ohne Fehler durch allerdings hat der Link immer nur 11 Stellen. Beim durchlauf wird (sPath) immer mit 11 Stellen angegeben.
Das resultat ist am Ende
D:\logo.sys
Code der umgewandelt werden soll
https://cyw.xxxx.de/content/00016651/Team%20Documents/xxxx_Europe/xxxxxxxx_10024/4_Sustainability_2016/PI_xxxxxx_2016.xlsm
Ist ein Sharepoint Link
Viele Grüße Sven
Anzeige
AW: Link per VBA in Lotus Notes message einfügen
12.12.2016 11:32:48
Jürgen
Hallo Sven,
die Lösung, die ich Dir aufgezeigt habe, wandelt eine Pfadangabe einer Datei, die im Filesystem liegt, in eine Zeichenfolge um, die als Link in eine Mail eingefügt werden kann.
Das scheint aber nicht Deine Frage zu sein, denn nun sehe ich, dass Du bereits die URL vorliegen hast und wir über in Sharepoint abgelegte Dateien sprechen. Nach Deiner letzen Mail vermute ich, dass Du nu ein Testproblem hast - wenn Du die URL als Text in die Mail schreibst, wird sie beim Versenden(!) in einen Link gewandelt (sofern Du nicht die entsprechende Option in Notes deaktiviert hast).
Gruß, Jürgen
Anzeige
AW: Link per VBA in Lotus Notes message einfügen
12.12.2016 16:15:12
Sven
Leider Nein. Der Link ist immer ein Text nehm ich den selben Link kopiere diesen und sende ihn mir nochmals manuel ist es ein Link.
AW: Link per VBA in Lotus Notes message einfügen
13.12.2016 09:35:16
Jürgen
Hallo Sven,
Du hast also schon einen Code, der Dir die URL als Text einfügt? Um zu beurteilen, was daran zu ändern ist, um das gewünschte Ergebnis zu erhalten, solltest Du ihn auch hier posten. Das wäre schon zu Beginn Deiner Frage sehr hilfreich gewesen, anstatt den Code einzustellen, mit der eine Mail mit Dateianhang erzeugt wird.
Gruß, Jürgen

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige