Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

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 " 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?"