Eine Mail aus Excel (mit VBA die Aktive Mappe) über Outlook zu versenden ist Ok.
Kennt jemand eine Lösung,daß das auch über das Mail Programm
Lotus Notes funktioniert? (Windows NT)
Ich wäre über jeden Tipp dankbar
Wolfgang
hier die einfachste Variante. Hierbei muss Lotus Notes und deine Inbox geöffnet sein.
Dim Maildb As Object Set Session = CreateObject("Notes.NotesSession")
Code eingefügt mit Syntaxhighlighter 1.14
Sub SendNotesMail()
Dim UserName As String
Dim MailDbName As String
Dim MailDoc As Object
Dim Session As Object
Dim Recipient As String
Set Maildb = Session.currentdatabase
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
Recipient = "
MailDoc.sendto = Recipient
MailDoc.Subject = "
MailDoc.Body = "Was auch immer"
MailDoc.SAVEMESSAGEONSEND = True
MailDoc.PostedDate = Now()
MailDoc.Send 0, Recipient
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
End Sub
Gruß
Bonte
leider kann ich nur mit Makros bezgl. Lotus Notes dienen. Da hab ich (auch mit Hilfe der Foren) ziemlich lang gebastelt.
Gruß
Bonte
ich hab die englische Version von Lotus Notes. Falls die deutsche Version so ist, wie Outlook, dann meine ich dein Postfach(da wo die Post reinkommt:-))
Gruß
Bonte
falls gewünscht, kann ich dir auch das Makro geben, das den Anhang einfügt.
Gruß
Bonte
Private Declare Function ShellExecute Lib "Shell32.dll" _
Alias "ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Private Sub Mail(eMail As String, Optional Subject As String, _
Optional Body As String)
Call ShellExecute(0&, "Open", "mailto:" + eMail + _
"?Subject=" + Subject + "&Body=" + Body, "", "", 1)
End Sub
Sub MailSenden_Click()
Dim eMail As String, Subject As String, Body As String
eMail = "poststelle@max-mustermann.de"
Subject = "Dies ist die Betreffzeile"
Body = "Dies ist der Nachrichtentext"
Call Mail(eMail, Subject, Body)
End Sub
Gruß
Peter
ich stelle den Code lieber hier ins Forum, dann habe mehr Leute was davon. Der Code ist (wie unschwer zu erkennen) nur ein Teil meiner kompletten Programmierung. Unötiges ist einfach zu löschen. Falls Fragen sind, einfach posten.
Dim session As Object Dim Recipients() As String strTo = Array(cstrTo, Me.lblUser2.Caption) 'Pfadeingabe zum zwischenspeichern 'Daten in Zeile 1 übertragen 'Nummernzuweisung für Materialart für Statistik der Datenbank Range("AB1").Value = Me.chkMaterialDefect.Value 'Chargennummern in 2. Tabellenblatt Spalte A übernehmen Call Chargennummern(Charge.txtBoxNo.Value & ";") With Workbooks("CI Temp.xls") Application.ScreenUpdating = False ReDim Recipients(10) 'Empfängerfeld dimensionieren 'PM (Recipients(0)) auswählen 'PSM Kempten als Recipients(1) ReDim Preserve Recipients(i) 'Empfängerfeld redimensionieren 'Mail erstellen On Error Goto Fehler 'Daten zum Auslesen doc.PostedDate = Now() Fehler:
Code eingefügt mit Syntaxhighlighter 1.14
Private Sub CmdSend_Click()
Dim db As Object
Dim doc As Object
Dim strTo As Variant
Dim strPath As String
Dim EmbedObj As Object
Dim AttachME As Object
Dim Namen As String
Dim NamenNeu As String
Dim j As Integer
Do
strPath = InputBox("Please enter a valid pathname" & vbCrLf & "to save the file temporarily:", _
"Save CI", "C:\")
'Falls das letzte Zeichen ein Backslash ist, diesen löschen
If Right(strPath, 1) = "\" Then strPath = Left(strPath, Len(strPath) - 1)
'Prüfen, ob dieser Pfad existiert
If Dir(strPath, vbDirectory) = "" Then Warning = MsgBox("This is no valid path." _
& vbCrLf & "Please check!", vbCritical, "Path not found")
Loop Until Dir(strPath, vbDirectory) <> ""
With Application
.ScreenUpdating = False
.SheetsInNewWorkbook = 2 'Einstellung, dass bei neuer Arbeitsmappe 2 Tabellen vorhanden sind.
End With
Workbooks.Add 'Neue Datei mit 2 Arbeitsmappen erstellen
ActiveWorkbook.SaveAs strPath & "\CI Temp", xlWorkbookNormal 'Arbeitsmappe speichern
Application.SheetsInNewWorkbook = 3 'Zürücksetzen auf 3 Tabellen bei neuer Arbeitsmappe
Sheets(1).Name = "Name"
Range("A1").Value = Me.lblCNo.Caption
Range("B1").Value = Me.txtMaterialNo.Value
Range("C1").Value = Me.txtOrderNoCustomer.Value
Range("D1").Value = Me.txtOrderNoCFS.Value
Range("E1").Value = Me.txtAffectedQ.Value & Me.lblAQ.Caption
Range("F1").Value = Me.txtDeliveredQ.Value & Me.lblDQ.Caption
Range("G1").Value = Me.lblUser2.Caption
Range("H1").Value = Me.lblDate2.Caption
Range("I1").Value = Me.txtWeb.Value
Range("J1").Value = Me.txtSBWidth.Value
Range("K1").Value = Me.txtSBlength.Value
Range("L1").Value = Me.txtCosts.Value
Range("M1").Value = Me.txtInspector.Value
Range("N1").Value = Me.txtMatInspDate.Value
Range("O1").Value = Me.txtSample.Value
Range("P1").Value = Me.txtMatSampDate.Value
Range("Q1").Value = Me.cboPSMKempten.Value
Range("R1").Value = Me.txtReason.Value
Range("U1").Value = Me.cboCC.Value
Range("V1").Value = Me.txtCustomerName.Value
Range("W1").Value = Me.txtOrderNoCC.Value
Range("X1").Value = Me.txtPos.Value
Range("Y1").Value = Me.txtMaterialName.Value
Range("Z1").Value = Me.txtPSM.Value
If Me.opt3D = True And Me.optSB = True Then Range("AA1").Value = "1"
If Me.opt3D = True And Me.optConverter = True Then Range("AA1").Value = "2"
If Me.optFF = True Then Range("AA1").Value = "3"
If Me.optXPP = True Then Range("AA1").Value = "4"
Range("AC1").Value = Me.chkDelivery.Value
Range("AD1").Value = Me.chkTransport.Value
Range("AE1").Value = Me.chkOthers.Value
Range("AF1").Value = Me.cboTBM.Value
Sheets(2).Name = "Name2"
Sheets(2).Activate
.Save
.Close
End With
'Zweite Arbeitsmappe für Complaint Inquiry als Anhang
With ActiveWorkbook.Sheets("Inquiry")
.Visible = True
.Activate
.Copy
.Visible = xlVeryHidden
End With
With ActiveWorkbook
.SaveAs strPath & "\CI", xlWorkbookNormal
.Close
End With
If Me.opt3D = True Then
Recipients(0) = "Name1"
Else
Recipients(0) = "Name2"
End If
Recipients(1) = Me.cboPSMKempten.Value
'Sachbaerbeiter als Recipients(2)
Recipients(2) = Me.cboSachbearbeiter.Value
i = 3 'für Recipients(3)
Namen = Me.txtPSM.Value & ","
Do
NamenNeu = LTrim(Right(Namen, (Len(Namen) - InStr(1, Namen, ","))))
Recipients(i) = Left(Namen, InStr(1, Namen, ",") - 1)
i = i + 1
Namen = NamenNeu
Loop Until InStr(1, Namen, ",") = 0
Recipients(i) = Namen 'letzten Namen übernehmen
Set session = CreateObject("Notes.NotesSession")
Set db = session.CURRENTDATABASE
Set doc = db.CREATEDOCUMENT
doc.Form = "Memo"
doc.Subject = cstrBetreff
doc.body = "Text"
doc.CopyTo = Recipients() 'Komplettes Empfängerfeld
doc.SAVEMESSAGEONSEND = True
Set AttachME = doc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", strPath & "\CI Temp.xls") ', "Attachment")
'Zweites Attachment - Complaint Inquiry
Set AttachME = doc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", strPath & "\CI.xls") ', "Attachment")
Call doc.send(True, strTo)
Set db = Nothing
Set doc = Nothing
Set session = Nothing
Kill (strPath & "\CI Temp.xls") 'Datei löschen
Kill (strPath & "\CI.xls") 'Datei löschen
'Info an User
Warning = MsgBox("Complaint Inquiry was sent.", vbInformation, "INFORMATION")
Me.CmdSend.Enabled = False 'Send-Button deaktivieren
Me.lblSend.Enabled = False
Exit Sub
Kill (strPath & "\CI Temp.xls") 'Datei löschen
Kill (strPath & "\CI.xls") 'Datei löschen
Warning = MsgBox("Please change to Lotus Notes and close all databases except your inbox!!" _
& vbCrLf & vbCrLf & "Confirm this message and click the 'Send Inquiry'-Button again.", _
vbCritical, "ERROR")
End Sub
Gruß
Bonte
Schau auch mal weiter unten im Thread.
Gruß
Bonte
hier Erläuterunen zum Code.
Den Zugang zu Lotus Notes bekmmst du mit
Set session = CreateObject("Notes.NotesSession")
Danach mußt du auf die aktuelle Datenbank zugreifen. Lotus Notes arbeit hauptsächlich mit Datenbanken. Dein Postfach ist eine solche Datenbank.
Set Maildb = session.CURRENTDATABASE
Als nächstes erstellst du ein neues Dokument (Mail)
Set MailDoc = Maildb.CREATEDOCUMENT
Die nächsten Zeilen geben an, welche Einträge wo stehen sollen.
Form = "Memo" bedeutet (bei mir im Englischen) "Neue Mail"
Recipient (maildoc.sendto)= Dein Empfänger
maildoc.copyto = CC
maildoc.body = dein Text
maildoc.savemessageonsend= true
maildoc.posteddate=now() -> In deinem Postausgang wird die Mail sichtbar
maildoc.send ... = deine Mail wird versendet
Anschließend müssen alle Bereiche (set-Anweisungen) wieder auf 'Nothing' gesetzt werden.
Ich hoffe das hilft dir.
Gruß
Bonte