Okay...
ich habs jetzt so:
Sub Postsave(Source As Notesuidocument)
Dim doc As NotesDocument
Dim rtitem As Variant
Dim object As NotesEmbeddedObject
Dim sizeInBytes As Long
'...set value of doc...
Set doc = source.Document
Set rtitem = doc.GetFirstItem( "A1" )
If ( rtitem.Type = RICHTEXT ) Then
Set object = rtitem.GetEmbeddedObject( "City picture" )
sizeInBytes = object.FileSize
End If
End Sub
Also ich versteh das so:
Zuerst muß ich der Objektvariable doc einen Verweis auf das aktuelle Dokument geben. Das wird der Funktion über den Parameter "Source" gleich mitgegeben.
Dann suche und befülle ich die Objektvariable "rtitem" mit dem Feld namens "A1"
Jetzt überprüfe ich nocheinmal ob es sich bei dem gefundenen Objekt auch wirklich um ein RichText-Feld handelt.
Wenn ja dann weise ich der Objektvariable "object" den Inhalt des Feldes "rtitem" zu, wobei dieser Inhalt den Dateinamen "City picture" hat (???)
Als letzten Schritt lese ich aus wieviele Bytes "object" nun hat.
Hab ich das so richtige verstanden / gemacht?
Wenn ja hab ich folgendes Problem: Den Namen des EmbeddedObject ("City picture") kenne ich ja nicht vorher.
Hoffe ihr seht auch daß ich mir wirklich Mühe gebe es zu verstehen..
MfG
Jo, das müssen wir wohl als gegeben hinnehmen ... Ich erinnere mich noch daran, dass ich Ende der 90er in eine Applikation eine Grössenprüfung für eingefügte Bilder extra deswegen noch erweitern musste, weil es immer wieder Spezies fertig brachten, per Drag&Drop Objekte (!) in dem RTF für Bilder zu erzeugen (die dann natürlich sichtbar waren und auf den ersten Blick wie importierte Images aussahen).
Ich hab' jetzt extra nochmal nachgeschaut:
If docCurrent.HasItem ("$OLEOBJINFO") Then
Set itemToRemove = docCurrent.GetFirstItem ("$OLEOBJINFO")
While Not (itemToRemove Is Nothing)
Call itemToRemove.Remove
Set itemToRemove = docCurrent.GetFirstItem ("$OLEOBJINFO")
Wend
End If
Wäre interessant zu wissen, welche Einstellung zu Anhängen und welche zu OLE Objekten führt ...
Bernhard
Hallo,
ich nochmal mit 2 kleinen Problemen.
[1] Wenn im RT mal keine Datei ist und das Dokument gespeichert wird (kommt ja auch mal vor) dann kommt die Fehlermeldung "Type Missmatch"
[2] Ich hab versucht eine Größenabfrage einzubauen, damit die Warnung nur angezeigt wird wenn die Datei mehr als 3MB groß ist. Aber das funktioniert nicht, die "Then"-Bedingung wird nicht mehr durchlaufen.
Der Code:
Sub Postsave(Source As Notesuidocument)
Dim doc As NotesDocument
Dim rtitem As Variant
Dim object As NotesEmbeddedObject
Dim sizeInBytes As Long
'...set value of doc...
Set doc = source.Document
Set rtitem = doc.GetFirstItem( "A1" )
If rtitem.Type = RICHTEXT Then
Forall objects In rtitem.EmbeddedObjects
Messagebox objects.FileSize
If objects.Type = EMBED_ATTACHMENT And objects.FileSize > 3145728 Then ' 3MB Grenze
Messagebox "Achtung: Die Datei " & objects.Name & " ist " & Trim(Str(Round(objects.FileSize / 1048576 ,2))) & _
"MB groß!" & _
|
(Falls möglich sollte eine Konvertierung in ein speicherschonenderes Format erwogen werden. Z.B. BMP -> JPEG)|, 0+64,"Hinweis"
End If
End Forall
End If
End Sub
Könnt ihr mir sagen wo meine Fehler liegen?
Andreas
Hab das in die Abfrage nach dem Type mit eingebaut:
If objects.Type = EMBED_ATTACHMENT And objects.FileSize > 3145728 Then
.. getestet mit einem 13MB PDF.