Lotus Notes / Domino Sonstiges > OLE/COM-Programmierung

Lotus-Notes-Vorlage via Excel-Makro aufrufen

<< < (2/6) > >>

Tode:
Du holst Dir die Ansicht mit allen Vorlagen mittels NotesDatabase.getView( "Stationery" ).
Dann holst Du die entsprechende Vorlage aus dieser Ansicht über NotesView.GetDocumentByKey( "Name der Vorlage") (geht nicht, weil Ansicht nicht sortiert nach Name)
einen NotesViewNavigator und einer While- Schleife, in der Du die NotesViewEntry- Elemente prüfst, ob Sie Deinen Vorlagennamen haben.

Dann benutzt Du den Code aus dem "QueryOpendocument"- Event der Ansicht (Stationary) um aus dieser Vorlage eine neue Mail zu generieren:


--- Code: --- Dim note As New NotesDocument(db)
Call vorlagedoc.copyallitems(note)
Call note.ReplaceItemValue("Form",vorlagedoc.Form(0))
Call note.RemoveItem("$VersionOpt")
Call note.RemoveItem("$NoPurge")
Call note.RemoveItem("ProtectFromArchive")
Call note.RemoveItem("MailStationeryName")
Call note.RemoveItem("IsMailStationery")
Call note.ReplaceItemValue("tmpSkipSignature","1")

--- Ende Code ---

Dann füllst Du den Empfänger und ggf. andere Daten (wie Du es in Deinem Code schon machst) und versendest das Ding über note.Send

Drehstuhlpilot:
Okay, also mit dem NotesViewNavigator bin ich nun leicht überfordert. Wenn ich versuche, den Navigator via


--- Code: ---Set NotesViewNavigator = NotesView.CreateViewNav
--- Ende Code ---

festzulegen, gibt er mir den Laufzeitfehler 91 (Objektvariable oder With-Blockvariable nicht festgelegt).

Wenn ich NotesView via


--- Code: ---Set NotesView = NotesDatabase.getView("Stationary")
--- Ende Code ---

festlegen möchte, gibt er mir den Laufzeitfehler 438 (Objekt unterstützt diese Eigenschaft oder Methode nicht).

Irgendwie steh' ich auf dem Schlauch...  ???

Andrew Harder:
Also wenn Du die View schon nicht bekommst, wirst Du Dir von der nicht vorhandenen View auch keinen Navigator erstellen können.
Soweit logisch.
Leider fehlt der Rest vom Code, muss man dann halt raten.

Am besten mal den Testcode in einen Agent packen und den Debugger anwerfen.
sollte in etwa so etwas sein - fast zu 100% aus der Notes Designerhifle kopiert:

--- Code: ---Dim session As NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim nav As NotesViewNavigator

set session = New NotesSession
Set db = session.CurrentDatabase
Set view = db.GetView("Stationary")
Set nav = view.CreateViewNav()
--- Ende Code ---

Tode:
Du kennst aber schon den Unterschied zwischen Klassen (NotesDatabase, NotesView, NotesViewNavigator) und daraus instantiierten Variablen, oder?
Weil wenn nicht, dann müssten wir Dir hier den kompletten Code runtertippen und Du müsstest ihn einsetzen ohne zu verstehen, was da passiert... Das ist nicht Sinn des Forums.

Denn: Code im Auftrag zu schreiben ist mein Job (und der von vielen anderen im Forum), das werde ich nicht kostenlos im Forum anbieten.
Hilfe zur Selbsthilfe dagegen schon.

EDIT: Nur nebenbei: Dein Set MailDB = session.CurrentDatabase funktioniert nur, wenn die Mail- Datenbank zufällig die gerade geöffnete Datenbank im Client ist... Wenn Du gerade im persönlichen Adressbuch stehst, dann wird der ganze Code knallen...

Set MailDB = Session.CreateDatabase( "", "" )
Call mailDB.OpenMail()

wäre richtig...

Drehstuhlpilot:
Also mit den Notes-Klassen kann das VBA hier leider nichts anfangen. Evtl. wurde die .dll auch noch gar nicht registriert. Aus einer Prüfung der regedit wir leider auch nichts, da keine Rechte vorhanden sind. :$

Im Folgenden dennoch mal der Code bis zur (geplanten) Erstellung des Navigators:


--- Code: ---Dim session As Object
Dim db As Object
Dim view As Object
Dim nav As Object

set session = New NotesSession
Set db = session.GetDatabase("", "")
Call db.OpenMail
Set view = db.GetView("Stationary")
Set nav = view.CreateViewNav()

--- Ende Code ---

In der letzten Zeile gibt er nach wie vor den Laufzeitfehler 91. Vermutlich wegen der fehlenden library...

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln