Domino 9 und frühere Versionen > ND8: Entwicklung
VBA das aktuelle Dokument auslesen
Tiger955:
Hallo!
Ich bin neu im Forum und wende mich mit einer Frage an Euch, an der ich mir seit Längerem die Zähne ausbeisse.
Ich brauche einen VBA-Code für folgende Problemstellung:
Der User soll von einer Access-Datenbank aus einen Button klicken können, und aus dem gerade in Lotus Notes GEÖFFNETEN Mail (CurrentDocument) sollen die Attachments auf der HD gespeichert werden.
Ich schaffe das zwar, wenn ein ganzer Ordner durchlaufen werden soll, aber ich möchte nur die gerade in Notes geöffnete Mail untersuchen.
Ich brauche das in der Weise, weil aus dem VBA-Code in Access der Namen der Attachments generiert wird, welcher wiederum von der Datensatz-ID zusammenhängt und in bestimmte Tabellen Einträge gemacht werden.
Konkret kann ich auch den Code auch nicht mit Objects, also ohne einen Verweis auf Notes-Bibliotheken aufbauen, weil ich die Session nicht richtig ansprechen kann. Leider kann ich den Code, den ich verwende nicht posten, weil ich derzeit von daheim schreibe und ich am Privat-Notebook den Code nicht habe.
Ich bekomme auch einen Fehler bei der Initalisierung (?) der Session und mein Notes-PW wird verlangt. Alles extremkomplex, wenn man das für viele User gestalten soll. Es muß daher "allgemein gültig" sein.
Hoffe Ihr könnt mir helfen. Besten Dank!
WildVirus:
Hallo Tiger,
und warum nicht sauber in Notes mit Script realisieren und die Werte, wenn sie denn unbedingt in Access landen müssen, per COM oder anderen Windoof-Mechanismen rüberschieben ?
Nur so'ne Frage.
CU,
Axel
P.S. Hat der Tiger auch einen richtigen Namen ?
Tiger955:
Hallo Axel!
Warum nicht in Notes mit Script....
- weil ich Notes nicht kann
- weil ich aus Access (VBA) heraus sämtliche Aktionen starte (Namensgebung der Attachments, Aufrufen des Kunden, etc.)
- weil ich vermutlich nur an einer Kleiniglkeit scheitere
Übrigens hier ist der Code, den ich verwende und der mir die Attachments so extrahieren SOLLTE, wie ich mir das vorstelle.
Function ReadCurrentMail()
Dim workspace As Object
Dim Form As Object 'notesUiDocument
Dim subject As String
Dim doc As Object
Dim docID As String
Dim mailFile As Object
Dim body As Object
'Embedded objects are of the datatype Variant.
Dim vaItem As Variant
Dim vaAttachment As Variant
Dim strPathToSave As String
Const EMBED_ATTACHMENT As Long = 1454
Const RICHTEXT As Long = 1
strPathToSave = "D:\Test\Attachments\"
Set workspace = CreateObject("Notes.NotesUiWorkspace")
Set Form = workspace.currentDocument
subject = Form.fieldGetText("Subject")
Debug.Print subject
'Form.EditMode = True 'property side-effect forces edit mode
'Form.gotoField "Body"
'Form.selectAll
'Form.copy
Set body = Form.GETITEM("Body")
If body.HasEmbedded Then
If vaItem.Type = RICHTEXT Then
For Each vaAttachment In vaItem.EmbeddedObjects
If vaAttachment.Type = EMBED_ATTACHMENT Then
'Save the attached file into the new folder and remove it from the e-mail.
With vaAttachment
If Right(vaAttachment.Name, 8) = ".pdf" Then
Debug.Print vaAttachment.Name
'.ExtractFile strPathToSave & vaAttachment.Name
'da alle Mails von der VA so bennant sind: 2013042932.pdf.pdf muß das PDF auf 2013042932.pdf gespeichert werden
'Name strPathToSave & vaAttachment.Name As strPathToSave & Mid(vaAttachment.Name, 1, Len(vaAttachment.Name) - 4)
'.Remove
End If
End With
'Save the e-mail in order to reflect the deleting of the attached file.
'noDocument.Save True, False
End If
Next vaAttachment
End If
End If
End Function
Ich bekomme einen Fehlere bei
Set body = Form.GETITEM("Body")
Fehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht.
Wie weise ich daher dem Object den Bereich "Body" zu, oder wie untersuche ich sonst das Mail auf Attachments, um sie dann zu extrahieren.
Das wäre mein Problemchen.
Danke
Michael (Tiger955)
ghostmw:
Moin,
also wenn ich das richtig sehe, gibt es keine Methode GETITEM ... oder ?
GETFIRSTITEM würde ich empfehlen.
ascabg:
Hallo,
Weil dies im FrontEnd (NotesUIDocument) nicht funktioniert.
Probier mal - nicht getestet -
--- Code: ---Set Body = Form.Document.getFirstItem("Body")
--- Ende Code ---
Andreas
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln