# Mail via Lotus Notes versenden



## bullayer (14. März 2007)

Hallo,
ich suche eine Möglichkeit, via VB 6.0 und Lotus Notes eine Mail mit Anhang zu versenden. Hat jemand Beispielcodes, wie man sowas bewerkstelligen kann?


----------



## Jacka (14. März 2007)

Hi!

Hier ist mein Code den ich verwende (Client muss geöffnet sein):

```
Public Sub SendNotesMail()

Dim Subject As String, attachment As String, bodytext As String, saveit As Boolean
Dim ToAdressen(10) as String

'Achtung! Der Notes Client muss auf dem System installiert sein!

    Dim Maildb As Object 'Die Datenbank
    Dim UserName As String 'Der Benutzername
    Dim MailDbName As String 'Der Datenbankname
    Dim MailDoc As Object 'Das Maildokument selbst
    Dim AttachME As Object 'Der Anhang (Richtext)
    Dim Session As Object 'Die Notes Session
    Dim EmbedObj As Object 'Ein eingebettetes Objekt (Anhang)
    Dim Recip(2) As Variant
    Dim LinkME As Object
    Dim testlink As String
     
    Subject = xpText4.Text
    bodytext = xpText5.Text
    attachment = AppPfad & "\Links.xls"
            
    'Die Session starten
    Set Session = CreateObject("Notes.NotesSession")

 On Error GoTo Fehler:
    'Den Benutzernamen auslesen und den Dateinamen
    'der MailDB errechnen
    'Dies wird nicht überall benötigt. Auf manchen
    'Systemen kann auch ein leerer String übergeben werden
    UserName = Session.UserName
    MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
    
    'Datenbank öffnen
    Set Maildb = Session.GetDatabase("", MailDbName)
     If Maildb.IsOpen = True Then
     Else
         Maildb.OPENMAIL
     End If
     
    'Ein neues Maildokument erstellen
    Set MailDoc = Maildb.CreateDocument
    MailDoc.Form = "Memo"
    MailDoc.sendto = Recip
    MailDoc.Subject = Subject
    MailDoc.body = bodytext
    MailDoc.SaveMessageOnSend = True
       
    'Eingebettete Objekte und Anhänge hinzufügen
    If attachment <> "" Then
        Set AttachME = MailDoc.CreateRichTextItem("Attachment")
        Set EmbedObj = AttachME.EmbedObject(1454, "", attachment, "Attachment")
        'MailDoc.CREATERICHTEXTITEM ("Attachment")
    End If
    
    'Senden
    MailDoc.PostedDate = Now()

If ToAdressen(1) = "" Then
    MsgBox "Please enter recipients!"
    GoTo Fehler2
Else
    MailDoc.Send 0, ToAdressen
    MsgBox "Message transmitted"
    GoTo Fehler2
End If
    
    'Aufräumen
    Set Maildb = Nothing
    Set MailDoc = Nothing
    Set AttachME = Nothing
    Set Session = Nothing
    Set EmbedObj = Nothing
        
Fehler:
    MsgBox "Please open your Lotus Notes client!"
    Exit Sub

Fehler2:
    Exit Sub
        
End Sub
```

Oder unter den folgende Link schauen:
http://www.activevb.de/tipps/vb6tipps/tipp0544.html

Viele Grüße,
Jacka


----------



## bullayer (15. März 2007)

Danke @Jacka, funktioniert.

Kennst Du auch ne Möglichkeit, ne Mail zu versenden, ohne dass ein Mailclient installiert ist, z. Bsp. via WEB.DE


----------



## Alex F. (15. März 2007)

es gibt die möglichkeit mails mittels ie (hierzu kann man die adressenleiste irgendwie misbrauchen) zu versenden oder auch mit der vbsendmail von activevb.

Bei der Möglichkeit über den ie ist es wohl nicht möglich anhänge mit zu senden. Deswegen ist die VBsendmail eleganter


----------



## Jacka (15. März 2007)

Hi!

Schau doch nochmal hier rein:
http://www.activevb.de/rubriken/faq/faq0087.html

Viele Grüße,
Jacka


----------



## bullayer (16. März 2007)

Danke an alle, funktioniert alles prächtig


----------



## Rhinowsurfer (11. April 2007)

Frage an Jacka:

Hallo und guten Tag,
bin unter den Laien einer der Größten. Ich kupfere immer nur ab, was andere irgendwie veröffentlicht haben, wenn ich es gebrauchen kann. Habe aber kaum Ahnung mit diesen ganzen Programmierbefehlen: Kurz um: Habe diesen Link aus einem Excel-Forum bekommen: Wir haben auf der Maloche Excel2003 und LotusNotes 6.5.5

Habe naiv das Programm von Jacka in VBA Excel-Datei eingesetzt. Leider läuft es gar nicht. Muss ich irgendwo für Platzhalter, die im Programm vielleicht stehen, etwas anderes einsetzen'?

Wenn ich das Makro starten will dann kommt gleich der Fehler:
Fehler beim Kompilieren: Variable nicht definiert.  Angezeigt wird dann z.B. text1 hinter dem Untermakro SendNotesMail.

Ich hatte ja gehofft, dass den Code einfach bei mir einspiele und ich dann sofort in der Lage wäre, die entsprechende Excel-Seite als E-Mail versenden zu können.

Kann da einem Unbedarften wie mir noch geholfen werden. Oder ist das für mich nicht darstellbar?

Einen schönen Tag noch
wünscht der
Rhinowsurfer


----------



## Rhinowsurfer (13. April 2007)

Noch ein notwendiger Zusatz zu obiger Anfrage von mir
Wir nutzen VBA 6.4.9972

Gruß vom Rhinowsurfer


----------



## Jacka (13. April 2007)

Hi!

Hab die Frage erst jetzt gesehen  

Also:

Du benötigst für die Ausführung des Codes noch etwas:
In Excel:

```
.....   
    Subject = Textbox1.Text   '  ist der Inhalt aus einer Textbox und ergibt den Betreff
    bodytext = Textbox2.Text  '  ist der Inhalt aus einer weiteren Textbox und ergibt den   
                                             email-Text
    attachment = "C:\Liste.xls"  '  Die Excelliste die mit verschickt werden soll
    .....
    MailDoc.Send 0, ToAdressen  '  ToAdressen ist ein Array und enthält eben die  
                                                  Empfänger-Adressen
```

Du kannst auch einfach Subject = "Dies ist der Betreff" schreiben
Und:
        ToAdressen(0) = "abc@emailadresse.com"
        ToAdressen(1) = "xyz@emailadresse.com"

Du hast sicher AppPfad nicht definiert. Ist bei mir eine public variable und
definiert den Pfad, wo sich dann die EXE befinden.
Das könnte deine Fehlermeldung erklären.

Hoffe das hilft!
Sonst schreib nochmal!  

Viele Grüße,
Jacka


----------



## Rhinowsurfer (26. April 2007)

Hallo Jacka,

habe Probleme!
Habe Code, wie unten, eingegeben. Code läuft über Fehlerroutine aus.
Das System erkennt Lotus nicht.
Laienfrage von mir:
Muss ich beim Start der Session
              Set session=createObject("Notes.NotesSession")  
in der Klammer 'was anderes eingeben?
Beim schrittweisen Ablauf wird schon nichts in SESSION hineingeschrieben!

Der UserName ist aber richtig gefüllt. 
----------
ICh hatte mich ja als Laie und Abkupferer geoutet, also nicht böse sein, wenn die Frage auf unterem Niveau ist. ICh würde mich aber trotzdem freuen, wenn ich das mit Hilfe anderer hinbekommen würde. Denn nichts ist schöner, als hilfreiche Technik am Arbeitsplatz. Schönen Maifeiertag wünscht der Rhinowsurfer!



Public Sub SendNotesMail()

Dim Subject As String, attachment As String, bodytext As String, saveit As Boolean
Dim ToAdressen(10) As String

'Achtung! Der Notes Client muss auf dem System installiert sein!

    Dim Maildb As Object 'Die Datenbank
    Dim UserName As String 'Der Benutzername
    Dim MailDbName As String 'Der Datenbankname
    Dim MailDoc As Object 'Das Maildokument selbst
    Dim AttachME As Object 'Der Anhang (Richtext)
    Dim Session As Object 'Die Notes Session
    Dim EmbedObj As Object 'Ein eingebettetes Objekt (Anhang)
    Dim Recip(2) As Variant
    Dim LinkME As Object
    Dim testlink As String

'    Subject = xpText4.Text
'    bodytext = xpText5.Text
'    attachment = AppPfad & "\Links.xls"
Subject = "Dies ist der Betreff"
bodytext = "E-Mail-Text"
attachment = "U:\ABLAGE\BOC1\BOC15\4455\HV\WVS-Listen.xls"


    'Die Session starten
    Set Session = CreateObject("Notes.NotesSession")

 On Error GoTo Fehler:
    'Den Benutzernamen auslesen und den Dateinamen
    'der MailDB errechnen
    'Dies wird nicht überall benötigt. Auf manchen
    'Systemen kann auch ein leerer String übergeben werden
    UserName = Session.UserName
    MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"

    'Datenbank öffnen
    Set Maildb = Session.GetDatabase("", MailDbName)
     If Maildb.IsOpen = True Then
     Else
         Maildb.OPENMAIL
     End If

    'Ein neues Maildokument erstellen
    Set MailDoc = Maildb.CreateDocument
    MailDoc.Form = "Memo"
    MailDoc.sendto = Recip
    MailDoc.Subject = Subject
    MailDoc.body = bodytext
    MailDoc.SaveMessageOnSend = True

    'Eingebettete Objekte und Anhänge hinzufügen
    If attachment <> "" Then
        Set AttachME = MailDoc.CreateRichTextItem("Attachment")
        Set EmbedObj = AttachME.EmbedObject(1454, "", attachment, "Attachment")
        'MailDoc.CREATERICHTEXTITEM ("Attachment")
    End If

    'Senden
    MailDoc.PostedDate = Now()

If ToAdressen(1) = "" Then
    MsgBox "Please enter recipients!"
    GoTo Fehler2
Else
    MailDoc.Send 0, ToAdressen
    MsgBox "Message transmitted"
    GoTo Fehler2
End If

    'Aufräumen
    Set Maildb = Nothing
    Set MailDoc = Nothing
    Set AttachME = Nothing
    Set Session = Nothing
    Set EmbedObj = Nothing

Fehler:
    MsgBox "Please open your Lotus Notes client!"
    Exit Sub

Fehler2:
    Exit Sub

End Sub


----------



## Zvoni (4. Juli 2008)

Holladrio! Endlich mal ein gutes VB-Forum auf deutsch.
Bin nicht umhin gekommen, dieses Thema zu lesen, da ich im Moment genau das in der Firma coden muss!

Prinzipiell:
Gut: Der allgemeine Code von Jacka
Schlecht: In Mehrbenutzerumgebungen und zu starre Parametrisierung!!

Ich werde mal meine Variante hier reinsetzen. Ihr werdet ein paar deutliche Unterschiede bemerken. Hinweis: Habe den ganzen Code in ein Klasse gesetzt, mit nur "SendNotesMail" als öffentlicher Methode, deshalb auch der "Initialize"-Code


```
Private Declare Function GetPrivateProfileString Lib "kernel32" _
  Alias "GetPrivateProfileStringA" ( _
  ByVal lpApplicationName As String, _
  ByVal lpKeyName As Any, _
  ByVal lpDefault As String, _
  ByVal lpReturnedString As String, _
  ByVal nSize As Long, _
  ByVal lpFileName As String) As Long

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Private Const HKEY_CURRENT_USER = &H80000001
Private Const KEY_READ = &H20019
Private Const REG_SZ = 1

Private Pfad As String
Private MailFile As String

Private Function ReadReg() As String
Dim RetVal As Long
Dim hKey As Long
Dim TmpSNum As String * 1280

  ' Registryschlüssel öffnen
  RetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Lotus\Notes\7.0", 0&, KEY_READ, hKey)
  
  If RetVal <> 0 Then
    
    RetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Lotus\Notes\6.0", 0&, KEY_READ, hKey)
    
    If RetVal <> 0 Then
    
        MsgBox "Der Schlüssel konnte nicht geöffnet werden."
        Exit Function
        
    End If
    
  End If

  ' Wert auslesen
  RetVal = RegQueryValueEx(hKey, "NotesIniPath", 0, REG_SZ, _
    ByVal TmpSNum, Len(TmpSNum))
  If RetVal <> 0 Then
    MsgBox "Der Schlüsselwert konnte nicht gelesen oder gefunden werden."
    
    Exit Function
  End If
    
    ReadReg = Left$(TmpSNum, InStr(1, TmpSNum, vbNullChar) - 1)

  ' Schlüssel wieder schliessen
  RetVal = RegCloseKey(hKey)
End Function

Private Sub Class_Initialize()
Dim TmpRetStr As String * 1280
Dim RetVal As Long

    Pfad = ReadReg

    RetVal = GetPrivateProfileString("Notes", "MailFile", "Fehler", TmpRetStr, Len(TmpRetStr), Pfad)

    If RetVal > 0 Then MailFile = Left$(TmpRetStr, RetVal)

End Sub

Public Sub SendNotesMail(Subject As String, Attachment As String, BodyText As String, SaveIt As Boolean, ParamArray Recipient() As Variant)
'Variablen Dimensionieren, die benötigt werden, um das Mail zu senden
    Dim Maildb As Object  'Die Datenbank
    Dim UserName As String 'Der Benutzername
    Dim MailDoc As Object  'Das Maildokument selbst
    Dim AttachME As Object  'Der Anhang (Richtext)
    Dim Session As Object 'Die Notes Session
    Dim EmbedObj As Object  'Ein eingebettetes Objekt (Anhang)
    Dim Adressen() as Variant
    
    Adressen=Recipient

    'Die Session starten
    Set Session = CreateObject("Notes.NotesSession")
       
    'Datenbank öffnen
    Set Maildb = Session.GETDATABASE("", MailFile)
     If Maildb.IsOpen = True Then
          'Fertig zum mailen!
     Else
         Maildb.OPENMAIL
     End If
     
    'Ein neues Maildokument erstellen
    Set MailDoc = Maildb.CREATEDOCUMENT
    MailDoc.Form = "Memo"
    MailDoc.sendto = Recipient(0)
    MailDoc.Subject = Subject
    MailDoc.body = BodyText
    MailDoc.SAVEMESSAGEONSEND = SaveIt
    
    'Eingebettete Objekte und Anhänge hinzufügen
    If Attachment <> "" Then
        Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
        Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
        'MailDoc.CREATERICHTEXTITEM ("Attachment")
    End If
    
    'Senden
    MailDoc.PostedDate = Now()
    MailDoc.SEND 0, Adressen
    
    'Aufräumen
    Set Maildb = Nothing
    Set MailDoc = Nothing
    Set AttachME = Nothing
    Set Session = Nothing
    Set EmbedObj = Nothing
End Sub
```

Warum so umständlich? Ganz einfach: Lotus speichert in der Registry den Pfad zur Benutzerdefinierten INI-Datei, in welcher der korrekte Pfad zur NSF steht, und das ist eigentlich das, was ich brauche, deshalb: Erst in Registry gucken, wo die INI sitzt (ReadReg-Sub), dann hole den Pfad zur NSF aus der INI raus (RetVal = GetPrivateProfileString-Zeile in "Initialize"). (Fragt mich jetzt nicht, warum Lotus den Pfad zur NSF nicht in der Registry unter HKEY_CURRENT_USER speichert, weil da gehört das eigentlich hin!!)

Die MailDBName-Berechnung mit 

```
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
```
ist NICHT gut!
Was passiert, wenn ein Benutzer "Fritz Mueller" heisst, ein anderer "Frank Mueller"?
In beiden Fällen käme mit der Formel "fmueller.nsf" heraus, was aber nicht eindeutig in einer Mehrbenutzer-Umgebung ist. Deshalb die Registry/INI-Klimmzüge


ParamArray Recipient deshalb als Parameter-Array, weil ich immer min. 1 Empfänger brauche (-->Recipient(0)), Hierzu brauche ich aber vor Aufruf meiner Klassen-Methode SendNotesMail eine Plausibilitätsprüfung, dass Recipients mind. 1 Eintrag enthält. Wenn Recipients keinen Einträg enthält, wird die Klassen-Methode erst gar nicht aufgerufen. Wenn ich mehr habe, werden diese automatisch mitgegeben.
Fragt mich jetzt aber nicht, warum ich

```
Adressen=Recipient
```
machen muss. Der Code weigert sich "MailDoc.SEND 0, Recipient" direkt auszuführen

Desweiteren vermeide ich durch meine Variante dieses unsägliche "GoTo Fehler2"-Gedöns.

Kommentare hierzu?


----------



## DrSoong (5. Juli 2008)

Wenn du noch mehr solchen Code hast, stell den doch als Tutorial rein (auch den hier).


Der Doc!


----------



## mindsuk (12. Januar 2012)

@Zvoni 

ich wollte gerade deine Variante testen, aber wenn ich in Excel Alt+F8 drücke, wird mir ihr nichts als Auswahl angezeigt? Da müsste doch SendNotesMail erscheinen...

Hast Du einen Tipp?

LG mindsuk


P.S: Hintergrund ist auch, das ich das ganze als Makro einer Grafik zuordnen möchte!


----------



## Zvoni (12. Januar 2012)

> Hinweis: Habe den ganzen Code in ein *Klasse* gesetzt, mit nur "SendNotesMail" als öffentlicher Methode, deshalb auch der "Initialize"-Code



Das Zauberwort heisst KLASSE

P.S.: Mittlerweile muss man den obigen Code sogar erweitern um

```
RetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Lotus\Notes\8.0", 0&, KEY_READ, hKey)
```

... da wir ja mittlerweile bei Lotus 8.5 sind.....


----------



## Zvoni (12. Januar 2012)

Nachtrag: Die ReadReg-Funktion würde ich mittlerweile ein wenig anderst coden, und zwar mit dem Aufruf


```
RetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Lotus\Notes", 0&, KEY_READ, hKey)
```

und sich dann weiter durch die Registry hangeln. Hab jetzt aber keinen Bock drauf *gg*


----------



## mindsuk (13. Januar 2012)

Guten Morgen und Danke für Deine Antwort. Ich muss dann noch einmal weiter ausholen.

Ich habe ein Excel Sheet, welches ich zukünftig für meine Kunden als eine Art Bestellformular entworfen habe. Dort möchte ich zwei Buttons zum direkten versenden der Arbeitsmappe ohne Macros am Ende anbieten. Den ersten, zum versenden über Outlook habe ich erfolgreich erstellt und getestet. Nun versuche ich seit Tagen diesen für Lotus Notes zu basteln. Wenn ich in Excel Alt+F11 drücke, sehe ich das VBA Projekt und dort das Modul 1 mit dem Code für Outlook. Diesen konnte ich auch als Macho dem Button zuordnen.
Wie und wo muss ich jetzt Deinen Code einfügen, damit ich das ganze dem Lotus Notes Butten zuordnen kann? Ein weiteres Modul anlegen und den Code dort einfügen? 

wäre super, wenn mir jemand helfen könnte..

mindsuk


----------



## Zvoni (13. Januar 2012)

Punkt 1: Die Excel-Mappe, in welcher dein Button und demzufolge das Makro ist, per Mail ohne Makros verschicken ist nicht******!

An deiner Stelle, würde ich eher per Makro die ganzen relevanten Bestelldaten in ne Text-Datei schreiben, welche einem gewissen Satzaufbau folgt, und diese dann per E-Mail versenden.

Auf der Empfängerseite brauchst du dann nur noch ein Makro, was die ganze Datei ausliest, und du hast die Bestellung in sauberer Form vorliegen.

Punkt 2: Du musst im VB-Editor ein Klassenmodul (!!) einfügen, meinen Code komplett dort rein, dann schreibst du in deinem Modul 1 das Marko für den Lotus-Button, und aus diesem Makro heraus rufst du dann meine Klasse auf (Instanzierung nicht vergessen)


----------



## mindsuk (13. Januar 2012)

Hallo Zvoni, dazu kenne ich mich zu wenig mit der Materie aus!

Notfalls kann die Mappe auch mit Macros gesendet werden, mich würde es nicht stören. Mir würde auch ein Textfile reichen, ein erneutes demodelieren müsste für meinen Geschmack gar nicht sein, Hauptsache ich kann die Positionen lesen.

Ich habe kein Macro für den "Lotusbutto"n...das ist einfach ein GIF Symbol, welches ich verknüpfen möchte. Oder verstehe ich jetzt etwas falsch?

LG


----------



## Zvoni (13. Januar 2012)

Um ein Makro zu triggern brauchst du einen Auslöser, welchem man ein Makro zuordnen kann.
Das sind meistens Steuerelemente, welche ein Click-Ereignis haben.

Wenn du da nur so ein Bildchen hast, solltest du einfach mal prüfen, ob du diesem Bild ein Makro zuweisen kannst (Ich arbeite nunmal auch in Excel nur mit "echten" Steuerelementen)

Falls ja, kann ich dir dann die Routine schreiben inkl. Klassenmodul etc.

Oder ich mach dir ne Beispiel-Excel-Mappe mit allen Funktionen drin.


----------



## mindsuk (13. Januar 2012)

Hallo Zvoni, da es mit dem anderen Gif funktioniert hat, sollte es gehen. Wenn ich mit der rechten Maustaste auf das Gif gehe und auf Makro zuweisen, dann bekomme ich aber leider nur das Makro für die Mail über Outlook angeboten, welches ich bereits dem anderen Gif hinterlegt habe.

Ich wäre Dir sehr dankbar, wenn Du mir da helfen könntest!!

Liebe Grüße


----------



## Zvoni (13. Januar 2012)

OK. Kein Problem.

Wo kommen die Daten für Betreff, Empfänger usw. her? Stehen die in irgendner Zelle der Tabelle, oder sollen die hart in den code kommen?


----------



## mindsuk (13. Januar 2012)

Super!

Also bisher waren die im code, aber wenn es möglich wäre hier Zellen auszulesen, das wäre genial******
Habe hier eine Registerkarte Daten, wenn von dort in Z.B. D2 der Empfänger und E2 der Betreff ausgelesen werden könnte...?


----------



## Zvoni (14. Januar 2012)

```
Public Sub SendMailLotus() 'Diese Prozedur kommt in dein bereits existierendes Modul1 und wird dem Gif zugewisen
Dim clsLotus as New CLotus
Dim Betreff as String
Dim Body as String
Dim Attachment as string
Dim Empfänger as String		'Wenn es nur ein Empfänger ist, bei mehreren muss man ein Array Empfänger() deklarieren

       Betreff=DieseArbeitsmappe.Sheets("Daten").Cells(2,4) 'Cells(2,4) ist D2
       Empfänger=DieseArbeitsmappe.Sheets("Daten").Cells(3,4) 'D3
       Body=DieseArbeitsmappe.Sheets("Daten").Cells(4,4) 'E-Mail-Text in D4
       Attachment=DieseArbeitsmappe.Path & "\" & DieseArbeitsmappe.Name

       clsLotus.SendNotesMail Betreff, Attachment, Body, True, Empfänger

End Sub
```

Diesen Code in dein Modul1

Meinen Code oben in ein *Klassen*-Modul einfügen, und das Modul dann *CLotus* benennen.

Achtung: Ungetestet!


----------



## mindsuk (16. Januar 2012)

Vielen Dank Zvoni!

Das Zuordnen hat funktioniert, aber bei Ausführen bekomme ich eine Fehlermeldung:

"Fehler beim Kompilieren: If-Block ohne End if"


----------



## Zvoni (16. Januar 2012)

Kann ich nicht erkennen!

In Welcher Funktion kommt der Fehler?


----------



## mindsuk (16. Januar 2012)

ah, Fehler selbst gefunden! Ich hatte ja noch die Zeile hinzugefügt:

_RetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Lotus\Notes\8.0", 0&, KEY_READ, hKey)

  If RetVal <> 0 Then_

Hab dann noch ein *End if* hinzugefügt...
Aber nun kommt die Meldung:

"Der Schlüssel konnte nicht geöffnet werden"


----------



## Zvoni (16. Januar 2012)

Hast du Lotus bei dir drauf?

Ausserdem muss die If-Abfrage dann so lauten:


```
RetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Lotus\Notes\8.0", 0&, KEY_READ, hKey)

If RetVal <> 0 Then
  ' Registryschlüssel öffnen
  RetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Lotus\Notes\7.0", 0&, KEY_READ, hKey)
  
  If RetVal <> 0 Then
    
    RetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Lotus\Notes\6.0", 0&, KEY_READ, hKey)
    
    If RetVal <> 0 Then
    
        MsgBox "Der Schlüssel konnte nicht geöffnet werden."
        Exit Function
        
    End If
    
  End If
End If
```


----------



## mindsuk (16. Januar 2012)

genau so hab ich es bereits geändert...und ja, habe Lotus Notes zum Testen installiert!

ABER! Es gibt diesen Registry Pfad nicht. Bis zu Lotus...Notes ja, danach passt es nicht mehr


----------



## Zvoni (16. Januar 2012)

OK!
Verstehe zwar nicht, was du für ne Lotus-Installation hast, aber mach mal folgendes.

Ich gehe mal von deinen Screenshots aus, dass du XP hast (unter Win7 heissen die Pfade nämlich anderst) und dass mindestens Lotus 8.5 installiert ist.

Folgenden Code in eine Text-Datei schreiben und als "lotus.Reg" abspeichern

Wichtig: Das USERNAME musst du durch deine eigene Login-Kennung ersetzen


```
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Lotus\Notes\8.0]
"NotesIniPath"="C:\\Dokumente und Einstellungen\\USERNAME\\Lokale Einstellungen\\Anwendungsdaten\\Lotus\\Notes\\Data\\notes.ini"
"NeedCommonFiles"=dword:00000001
```

Nachdem du abgespeichert hast, doppelclick auf das "lotus.reg" und danach müsstest du dann den Eintrag haben.

Aufpassen: Notepad versucht immer ein "*.txt" an den Dateinamen zu hängen

P.S.: Kontrollier mal, ob du auch tatsächlich die notes.ini unter
"C:\Dokumente und Einstellungen\USERNAME\Lokale Einstellungen\Anwendungsdaten\Lotus\Notes\Data\"
findest, ansonsten hilft der code nicht weiter


----------



## mindsuk (16. Januar 2012)

echt merkwürdig! hab da keinen Ordner Lotus im Ordner Anwendungsdaten (Application Data)******


----------



## Zvoni (17. Januar 2012)

Dann ist Lotus bei dir nicht richtig installiert bzw. du hast keinen Account im Lotus.

Richte dir mal Lotus als E-Mail-Programm richtig ein


----------



## mindsuk (13. Februar 2012)

Hallo Zvoni,

ich habe jetzt aufgegeben, ich bekomme Lotus einfach nicht richtig installiert. Vermutlich fehlen mir Rechte, da es sich um einen Firmenrechner handelt..
Besteht eventuell die Möglichkeit, dass ich Dir die Datei schicken könnte und Du einmal bei Dir probieren könntest? 

Vielen Dank!!


----------



## Zvoni (14. Februar 2012)

Kein Problem. hängs einfach hier als zip rein


----------



## dodgeviper77 (28. August 2017)

Hallo,

ich würde gerne ein Memo in einer TeamMailBox (nennen wir sie mal AB - CD) im Notes öffnen.

Mit diesem Code öffnet sich mein Standardmail

Process.Start("mailto:" & TextBox63.Text & "?subject=DeinBetreff&body=" & Form2.TextBox1.Text & "%0A")

Kann mir da jemand auf die Sprünge helfen?

Danke im Vorraus


----------

