IBM Notes oder Outlook?

Betrifft: IBM Notes oder Outlook?
von: Klaus M.
Geschrieben am: 02.11.2020 10:06:12
Hi Leute,
bei uns wird grad von IBM Notes auf Outlook umgestellt. Kein Problem, für beides hab ich _
bereits das passende Makro parat.
Private Sub SendMail_Outlook(sSubject As String, sTo As String, sCC As String, sText As String)
'***************************************************************************
'original Outlook Code by mumpel / www.herber.de / 11.04.2013 11:23:25
'http://www.herber.de/forum/messages/1308295.html
'**************************************************************************
Dim olApp As Object
Dim olOldBody As String
'Make Email
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldBody = .htmlBody
.To = sTo
.cc = sCC
.Subject = sSubject
.htmlBody = sText & olOldBody
.Attachments.Add myFile
End With
End Sub
Sub SendMail_Notes(sSubject As String, sTo As String, sCC As String, sText As String)
Dim Maildb As Object
Dim MailDbName As String
Dim MailDoc As Object
Dim Session As Object
Dim vAn As Variant
'Lotus Notes initialisieren
Set Session = CreateObject("Notes.NotesSession")
Set Maildb = Session.currentdatabase
Set MailDoc = Maildb.CreateDocument
MailDoc.Form = "Memo"
vAn = Split(sTo, " ; ") 'Empfänger Array
MailDoc.sendto = vAn 'Empängeradresse setzen
MailDoc.Subject = sSubject 'Betreff des Mails
MailDoc.SAVEMESSAGEONSEND = True
Set Workspace = CreateObject("Notes.NotesUIWorkspace") ' **durch das öffnen des Dokumentes _
durch NotesUIWorkspace**
Call Workspace.EDITDOCUMENT(True, MailDoc) ' **erreicht man das die eingestellte _
Signatur aus den **
Set doc = Workspace.CURRENTDOCUMENT ' **Lotus Notes Optionen eingefügt wird _
_
**
Call doc.GOTOFIELD("Body")
Call doc.INSERTTEXT(sText)
'Call doc.Send(True)
Set Maildb = Nothing
Set MailDoc = Nothing
Set Session = Nothing
End Sub
Jetzt könnte ich natürlich die Auswahl, welches Programm zum versenden verwendet wird, dem User überlassen und bei fehlauswahl eine Fehlermeldung hinnehmen:
Sub SendWhat()
Dim sText As String
Dim sTo As String
Dim sCC As String
Dim sSubject As String
sTo = "Frank Farmer ; Karl Ransaier "
sCC = ""
sSubject = "Todays File"
If MsgBox("Haben Sie Outlook (ja) oder immer noch Notes (nein) ?", vbYesNo) = 6 Then
sText = "Dear Colleages
find mail attached
more text with possbile html "
Call SendMail_Outook(sSubject, sTo, sCC, sText)
Else
sText = "Dear Colleagues " & Chr(10) & "find attached something without html"
Call SendMail_Notes(sSubject, sTo, sCC, sText)
End If
End Sub
Aber das ist nicht gut - erstens sind die meisten meiner Anwender bereits mental überfordert wenn sie den VBA-Editor nur sehen, zweitens gerneriert IBM Notes die Fehlermeldung (Memo not Found) innerhalb von Notes und nicht an VBA, mann muss also hin und her clicken.
Kann VBA direkt abfragen, welches Mailprogramm installiert ist? Also in Pseudocode so:
Sub SendWhat()
Dim sText As String
Dim sTo As String
Dim sCC As String
Dim sSubject As String
sTo = "Frank Farmer ; Karl Ransaier "
sCC = ""
sSubject = "Todays File"
Dim Outlook_Installed As Boolean
Dim Notes_Installed As Boolean
set Outlook_Installed = prüfe ob Outlook installiert ist
set Notes_installed = prüfe ob IBM Notes installiert ist
If Outlook_Installed Then
sText = "Dear Colleages
find mail attached
more text with possbile html _
_
b>"
Call SendMail_Outlook(sSubject, sTo, sCC, sText)
Else
If Notes_Installed Then
sText = "Dear Colleagues " & Chr(10) & "find attached something without html"
Call SendMail_Notes(sSubject, sTo, sCC, sText)
Else
MsgBox ("Es wurde kein Mailprogramm gefunden")
End If
End If
End If
End Sub
Kann mir dafür jemand korrekten Code geben?
LG,
Klaus

Betrifft: AW: IBM Notes oder Outlook?
von: Luschi
Geschrieben am: 02.11.2020 10:33:54
Hallo Klaus,
überprüfe doch per Vba, ob Outlook auf dem Rechner schon vorhanden ist:
Google-Suche: prüfen outlook installiert, z.B.
h i e r
Gruß von Luschi
aus klein-Paris

Betrifft: AW: IBM Notes oder Outlook?
von: Klaus M.
Geschrieben am: 03.11.2020 02:04:22
Theoretisch gut, mache ich aber nicht so - siehe den Einand von ChrisL.
Hansueli hat mir unten eine Methode über die REG gezeigt.
Dir trotzdem danke für die Mühe, und danke für das "für andere googeln" :-)
LG,
Klaus

Betrifft: AW: IBM Notes oder Outlook?
von: ChrisL
Geschrieben am: 02.11.2020 10:48:09
Hi Klaus
Ich vermute, dass ein längerer Zeitraum beide Programme installiert bleiben. Jedenfalls ist dies bei mir so (Migration in einem Monat und trotzdem ist Outlook bereits installiert). D.h. die Existenz eines bestimmten Mailprogramms kann nicht als Kriterium dienen. Wenn dann müsste man das Default-Mailprogramm aus der Registry lesen, aber wo/wie weiss ich auch nicht genau.
https://social.msdn.microsoft.com/Forums/en-US/62ecfd1c-eb0f-4fad-b36b-d05c79ff1168/how-to-find-default-email-client?forum=vblanguage
(funktioniert vielleicht mit einer bestimmten Windows-Version, aber wohl kaum auf Mac)
Was ich dir eigentlich nahelegen möchte, ist die Hyperlink-Methode zu wählen. Wie es scheint macht dein Mailprogramm nichts besonderes (keine Anhänge, spezielle Formatierungen etc.), weshalb Hyperlink die einfachste und Versions-unabhängige Methode wäre.
ActiveWorkbook.FollowHyperlink ("mailto:hans@muster.com?subject=Titel&body=EinText")
cu
Chris

Betrifft: AW: IBM Notes oder Outlook?
von: Klaus M.
Geschrieben am: 03.11.2020 02:02:50
Hallo Chris,
die Hyperlink Methode kannte ich noch gar nicht, versuche ich mich mal mit - in einem anderem Projekt.
In diesem (habe ich aus dem Beispiel natürlich heraus gekürzt) wird über viele 100 Zeilen ein HTML-STRING geschrieben und in die OUTLOOK übertragen.
Bei Notes habe ich kein HTML (oder weiss nicht wie), da habe ich die Texte einfach runter geschrieben und entsprechend unprofessionell / unformatiert sah es auch aus.
Aber für kurze Mails - so "Achtung, Auftrag xxx noch nicht abgeschlossen" - taugt die Hyperlink Methode bestimmt besser.
LG,
Klaus

Betrifft: AW: IBM Notes oder Outlook?
von: EtoPHG
Geschrieben am: 02.11.2020 11:22:44
Hallo Klaus,
Probier mal (Code in ein Modul):
Public Function getMailClient() As String
Dim wScript As Object
Dim RegKey As String
Dim Key As String
Key = "HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\"
On Error Resume Next
Set wScript = CreateObject("WScript.Shell")
getMailClient = wScript.RegRead(Key)
End Function
Als Formel
=getMailClient() wird der Name der default Mail-Applikation zurückgegeben.
Gruess Hansueli

Betrifft: AW: IBM Notes oder Outlook?
von: Klaus M.
Geschrieben am: 03.11.2020 02:00:23
Sieht sehr geil aus, hansueli. Zumindest bei mir zuhause funktioniert es korrekt - scheint genau das zu sein was ich gesucht habe.
Fettes Like!
mfg,
Klaus

Betrifft: AW: IBM Notes oder Outlook?
von: Klaus M.
Geschrieben am: 06.11.2020 09:22:14
Es funktioniert, vielen Dank.
Erstaunlicherweise war unsere IT schneller als ich und hat bereits alle User auf Outlook umgestellt. Naja, speichere das mal für die Zukunft.
LG,
Klaus
Beiträge aus dem Excel-Forum zum Thema "IBM Notes oder Outlook?"