Excel Makro Tabelle automatisch in Lotus Notes

Hallo Zusammen

ich habe eine Tabelle und möchte diese bei klick auf einen Commandbutton automatisch speichern / schließen/ und in eine Email bei Lotus notes verpacken. Über Outlook geht es mit folgendem Code

Sub Excel_Workbook_via_Outlook_Senden()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject(„Outlook.Application“)
Dim AWS As String
'Aktive Arbeitsmappe wird als Mail gesendet
AWS = ThisWorkbook.FullName
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = „irgendwer@provider“
.Subject = "Testmeldung von Excel2000 " & Date & Time
.attachments.Add AWS
.Body = „Das ist ein Test.“ & vbCrLf & „Bitte ignorieren.“
'Hier wird die Mail nochmals angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'Mail.Send
End With
'Outlook schliessen
OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

Den habe ich einen Forum gefunden, funktioniert auch super aber ich kann ihn leider nicht auf Lotus notes übertragen…

Ist das überhaupt möglich? Wenn ja wie?
Würde mich sehr über Hilfe von euch freuen

Viele Grüße
Stracciatella

ich habe eine Tabelle und möchte diese bei klick auf einen
Commandbutton automatisch speichern / schließen/ und in eine
Email bei Lotus notes verpacken. Über Outlook geht es mit
folgendem Code

Hi Steffi,

nachstehenden Code von SendNotesMail fand ich bei http://www.wbrnet.info/db/1140.html und hab nur Senden gebastelt.

Wenns nicht klappt, kanns mangels Notes nicht testen, google mal nach:
excel notes createobject

Gruß
Reinhard

Option Explicit
'
Sub senden()
ActiveSheet.Copy
ActiveWorkbook.SaveAs "Test"
ActiveWorkbook.Close
Call SendNotesMail("Betreffzeile", CurDir & "\Test.xls", "[email protected]", "Haupttext", True)
End Sub '
'
'Notes-Client muss installiert sein
Public Sub SendNotesMail(Subject As String, Attachment As String, \_
 Recipient As String, BodyText As String, SaveIt As Boolean)
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)
'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
If Attachment "" Then
 Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
 Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
 MailDoc.CREATERICHTEXTITEM ("Attachment")
End If
'Send the document
MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
MailDoc.Send 0, Recipient
'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
End Sub

Hi Reinhard

erstmal danke für die schnelle Hilfe :smile:
Ich hab aber nochmal folgende Frage:

bei dem Makro für Outlook war es ganz einfach die Empfänger Email Adressen einzufügen, hier weiß ich grad nicht wirklich wo ich sie eintragen kann:
meine Idee war:

Call SendNotesMail(„Betreffzeile“, CurDir & „\Test.xls“,
[email protected]“, „Haupttext“, True)

hier die Empfänger Emailadresse anstelle der [email protected] einzutragen

wozu ist dann aber diese Zeile:

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)

oder müssen hier die Adressen rein?

Viele Grüße
Steffi

wozu ist dann aber diese Zeile:

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)

oder müssen hier die Adressen rein?

Hi Steffi,

nein, mit der Adresse liegst du richtig.

In Excel-Vba ist es so, du hast da auch zwei Usernamen, einmal den den du grad als aktueller Benutzer bei Windos hats und den den du in Excel hast.

Sub Namen()
MsgBox Environ("Username") ' Windows
MsgBox Application.UserName ' Excel
End Sub

Ich mutmaße mit

UserName = Session.UserName

erhälst du den Usernamen den du grad in Notes hast.
Ich persönlich hätte das nie so geschrieben, ich benutze bewußt nie Variablennamen die auch Excel als Namen kennt.
Sicherer ist sowas:

MyUserName=
Benutzer=
U_Name=

o.ä. und am fast (es fehlen noch die Präfixe für global-, modul- oder prozedurweite Geltung, google mal nach ungarischer Notation bei Interesse) allerbesten ist:

strUserName

Zurück zur Frage, dein Notes-Username wird einer seltsamen Stringoperation unterzogen und hinten ein „.nsf“ angehängt.

Aus Usernamen „Steffi“ würde „SSteffi.nsf“, aus „Steffi aus München“ würde „Saus München.nsf“ o.ä.

Dann kommt

Set Maildb = Session.GETDATABASE("", MailDbName)

was um beim Beispiel zu bleiben das Gleiche ist wie

Set Maildb = Session.GETDATABASE("",„SSteffi.nsf“ )

Tja nu, da komme ich ohne Notes nicht weiter, da ich nicht weiß was GETDATABASE bedeutet.

Du könntest in den Editor von Notes gehen, dort in der Hilfe nach GETDATABASE suchen…

Andrerseits, sehe ich grad, es steht ja im Code:

'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

Anscheinend der Name der Mail.

Probiers einfach aus was pasiert wenn du das benutzt oder einfcah wegläßt.

Gruß
Reinhard

also ich hab das jetzt ausprobiert und bei mir klappts :smile:)) danke schön

dumm nur das ich gar nicht bedacht habe, dass die leute die die datei bekommen eventuell kein Notes haben sondern outlook oder sonst was :frowning: mist…dann klappts natürlich nicht…ich brauche einen universal code :wink:))

danke nochmal für die schnelle und gute HIlfe einen schönen sonnigen Tag!

Tabellenblatt mit Standardmailprogramm als Anhang

dumm nur das ich gar nicht bedacht habe, dass die leute die
die datei bekommen eventuell kein Notes haben sondern outlook
oder sonst was :frowning: mist…dann klappts natürlich nicht…ich
brauche einen universal code :wink:))

Hi Steffi,

der nachfolgende Code von beverly sendete ein Tabellenblatt als Mailanhang sogar über mein „Outlook Express“. er müßte also wohl mit allen Standardemailprogrammen klarkommen.

Gruß
Reinhard

Sub einzelnes\_blatt\_senden()
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
'\* 24.08.06, 22.04.07 \*
'\* erstellt von Karin, http://beverly.excelhost.de\*
'\* [email protected] \*
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
 Dim strTabelle As String ' Variable für den Tabellennamen
 Dim wsTabelle As Worksheet ' Variable für die Tabelle als Objekt
' Tabelle2 als Standard festlegen
 strTabelle = "Tabelle versenden"
' Name der zu versendenen Tabelle abfragen
 strTabelle = InputBox("Welches Blatt möchten Sie senden?" & vbCrLf & \_
 vbCrLf & "Bitte den Tabellennamen eingeben", , strTabelle)
' kein Abbruch der Eingabe
 If strTabelle "" Then
' Schleife über alle Arbeitsblätter
 For Each wsTabelle In ThisWorkbook.Sheets
' Name der Tabelle entspricht dem der zu versendenen Tabelle
 If wsTabelle.Name = strTabelle Then
' Bildschirmaktualisierung aus
 Application.ScreenUpdating = False
' Tabelle komplett kopieren
 Sheets(strTabelle).Copy
' aktive Arbeitsmappe mit Mailbenachrichtigung "Diese Tabelle wurde als Mail versandt" versenden
 ActiveWorkbook.SendMail "[email protected]", "Diese Tabelle wurde als Mail versandt"
' aktive Arbeitsmappe schließen ohne Speichern
 ActiveWorkbook.Close False
' Bildschirmaktualisierung ein
 Application.ScreenUpdating = True
' Schleife verlassen
 Exit For
 Else
' Tabelle mit dem eingegebenen Namen ist nicht vorhanden
 If wsTabelle.Name = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name Then MsgBox "Diese Tabelle gibt es nicht"
 End If
 Next wsTabelle
 End If
End Sub