AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
18.10.18 - 09:44:56
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  OLE/COM-Programmierung
| | |-+  Lotus-Notes-Vorlage via Excel-Makro aufrufen
« vorheriges nächstes »
Seiten: 1 [2] Nach unten Drucken
Autor Thema: Lotus-Notes-Vorlage via Excel-Makro aufrufen  (Gelesen 6665 mal)
Drehstuhlpilot
Frischling
*
Offline Offline

Beiträge: 11


« Antworten #20 am: 19.01.18 - 10:59:58 »

Okay, also mit dem Code ohne Navigator

Code:
Sub SendMail()

Dim db As Object
Dim session As Object
Dim view As Object
Dim vorlagedoc As Object
Dim doc As Object
Dim note As Object
Dim ws As Object

Set session = CreateObject("Notes.NotesSession")
Set ws = CreateObject("Notes.NotesUIWorkspace")
Set db = session.GetDatabase("", "")
Call db.OpenMail
Set view = db.GetView("Stationery")

Set vorlagedoc = view.getFirstDocument
Do Until vorlagedoc Is Nothing
    If vorlagedoc.getItemValue("MailStationeryName")(0) = "<Vorlage>" Then Exit Do
    Set vorlagedoc = view.getNextDocument(vorlagedoc)
Loop

If Not vorlagedoc Is Nothing Then MsgBox "Vorlage: " + vorlagedoc.getItemValue("MailStationeryName")(0)

Call vorlagedoc.copyallitems(doc)

Set doc = vorlagedoc

With doc
.Form = "Memo"
Recipient = "MaxMustermann@live.com"
.sendto = Recipient
.Subject = "Betreff"
.body = "Nachrichtentext"
End With

Set doc = ws.EditDocument(True, doc)
Set db = Nothing
Set doc = Nothing
Set session = Nothing

End Sub

durchläuft er sämtliche Schritte, findet durch die Do-Loop-Schleife auch anscheinend die richtige Vorlage, erstellt auch im weiteren Verlauf eine Mail, nutzt hierbei jedoch die Vorlage nicht. :$

(Den Block mit den "Call note.[...]" nach

Code:
Call vorlagedoc.copyallitems(note)
musste ich rausnehmen, da er mir den Laufzeitfehler 458 ausgab).

Beim Code mit Navigator und mit "nav.GetFirst" anstatt "nav.GetFirstEntry"

Code:
Dim db As Object
Dim session As Object
Dim view As Object
Dim nav As Object
Dim vorlagedoc As Object
Dim ve As Object

Set session = CreateObject("Notes.NotesSession")
Set db = session.GetDatabase("", "")
Call db.OpenMail
Set view = db.GetView("Stationery")
Set nav = view.CreateViewNav()
Set ve = nav.GetFirst

found = False
While found = False And Not ve Is Nothing
    Set vorlagedoc = ve.Document
    If vorlagedoc.GetitemValue("MailStationeryName")(0) = "<Vorlagenname>" Then
        found = True
    End If
    Set ve = nav.GetNextentry(ve)
Wend

gibt er mir in der Zeile
Code:
If vorlagedoc.GetitemValue("MailStationeryName")(0) = "<Vorlagenname>" Then
wieder den Laufzeitfehler 91.  Huh
Gespeichert
Tode
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6056


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #21 am: 19.01.18 - 11:57:01 »

Das war es was ich meinte: Du VERSTEHST den Code nicht, den Du einsetzt.

Im ersten Beispiel z.B. erstellst Du KEIN neues Dokument doc, sondern verweist auf das vorlagedoc... Und die Reihenfolge ist ausserdem falsch rum, weshalb natürlich ein CopyAllItems fehlschlägt...

Statt
Code:
Call vorlagedoc.copyallitems(doc)
Set doc = vorlagedoc
müsstest Du schreiben:
Code:
Set doc = db.CreateDocument()
Call vorlagedoc.copyallitems(doc)

Im zweiten Beispiel ist es so, dass die Ansicht auch Kategorien enthält. Und diese bekommst Du mit getfirst... Diese Kategorien haben kein Dokument, es müsste also ein If ve.IsDocument then vor das Set vorlagedoc =...

Aber mir wird das Ganze jetzt hier zu aufwändig, ich bin raus.
Viel Glück weiterhin.
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1051



« Antworten #22 am: 19.01.18 - 12:28:08 »

@torsten: man fängt immer klein an Wink
@drehstuhl: du hast es fast geschafft:
Code:
Dim db As Object
Dim session As Object
Dim view As Object
Dim vorlagedoc As Object
Dim docMail As Object
Dim note As Object
Dim ws As Object

Const vorlage = "<<Vorlage>>"

Set session = CreateObject("Notes.NotesSession")
Set ws = CreateObject("Notes.NotesUIWorkspace")
Set db = session.GetDatabase("", "")
Call db.OpenMail
Set view = db.GetView("Stationery")

Set vorlagedoc = view.getFirstDocument
Do Until vorlagedoc Is Nothing
    If vorlagedoc.getItemValue("MailStationeryName")(0) = vorlage Then Exit Do
    Set vorlagedoc = view.getNextDocument(vorlagedoc)
Loop

If vorlagedoc Is Nothing Then MsgBox "Vorlage ''" + vorlage + "'' wurde nicht gefunden": Exit Sub

Set docMail = db.createDocument
Call vorlagedoc.copyallitems(docMail)
docMail.Save True, False
Call ws.EditDocument(True, docMail)
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5
--
Nur ein toter Bug, ist ein guter Bug!
Drehstuhlpilot
Frischling
*
Offline Offline

Beiträge: 11


« Antworten #23 am: 22.01.18 - 07:27:18 »

Perfekt, so funktioniert's! Vielen Dank!
Gespeichert
Tode
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6056


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #24 am: 22.01.18 - 09:41:05 »

Nein, so funktioniert es nur teilweise... Du musst unbedingt nach dem CopyAllItems die Vorlagen- spezifischen Felder entfernen, sonst hast Du sehr seltsame Nebenwirkungen, entweder beim Absender oder beim Empfänger (z.B. die neuen Mails werden alle als Vorlage angezeigt, diese Mails können nicht archiviert werden, etc.)...

Bitte ergänze nach dem CopyAllitems noch unbedingt die von mir geposteten Zeilen:
Code:
Call note.RemoveItem("$VersionOpt")
Call note.RemoveItem("$NoPurge")
Call note.RemoveItem("ProtectFromArchive")
Call note.RemoveItem("MailStationeryName")
Call note.RemoveItem("IsMailStationery")
'- diese Zeile kannst Du weglassen, wenn Du die Signatur angängen willst und nicht "Skippen"
Call note.ReplaceItemValue("tmpSkipSignature","1")
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Drehstuhlpilot
Frischling
*
Offline Offline

Beiträge: 11


« Antworten #25 am: 22.01.18 - 09:54:36 »

Alles klar. Danke nochmal für den Hinweis!
Gespeichert
Seiten: 1 [2] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: