18. december 2003 - 12:26Der er
7 kommentarer og 1 løsning
Extract embedded object fra notes DB
Hejsa
Vi er igang med at trække dokumenter ud af en stor notes database (9 GB) det går også fint.
Men der er nogle embedded objectes og de driller.
En som har et godt eksemple på et bid kode som detacher et embedded object ud til f.eks. D:\files\
Koden vi bruger:
Set rtitem = doc.GetFirstItem( "Body" ) Forall o In rtitem.EmbeddedObjects If ( o.Type = EMBED_OBJECT ) Then Messagebox "Embedded object!" Set obj = doc.GetAttachment( o.Source ) Call obj.ExtractFile( "d:\files\c\tmp.txt" ) End If End Forall
Notes håndterer almindelige attachede objekter lidt forskelligt fra OLE-objekter. GetAttachment virker kun for "Attachede"-embeddede objekter.
Hvis det er OLE-embedde objekter, skal du faktisk lave kode der aktiverer objektet og via OLE/COM kald gemmer en kopi inde fra f.eks. MS Word. Det svarer til at du via UI aktiverer objektet og så fra Word vælger SaveAs. //Jörg
Ved hjælp at "obj.Activate", er det nu lykkedes mig at kunne aktivere OLE-objectet fra scriptet (enten som true eller false). Det var første skridt!
Nu mangler jeg at kunne få scriptet til at gemme dette object i en fysisk fil på disken. Er der nogle af jer der har ideer om hvordan dette kan gøres? jogii du snakker om at dette kan gøres via et OLE/COM kald - hvordan gøres dette?
Den handle du får, når du "obj.Activate" er nøglen. Dvs den fra Set handleV = notesEmbeddedObject.Activate( show ) Den er dit OLE-interface. Afhængig af hvilken objecttype der nu er tale om (Word, 123, Excel, Powerpoint etc) skal de efterfølgende kald tilpasses objekttypen du har fat i. Den nemmeste måde er at starte Makro-optageren i de pågældende produkter og udføre de funktioner du ønsker udført manuelt. Derefter kigger du koden i makroen efter og laver tilsvarende kode i LotusScript.
Desværre er det ikke altid nemt i MS produkter at finde ud af den rigtige syntakts for en metode/funktion. LotusScript kan kun kalde "funktioner" af typen funktion( var1, var2, var3, ...), mens de i MS ser lidt anderledes ud. Men ved at granske inline og online hjælpen kan man ofte gætte sig frem til syntaksen.
f.eks. kunne nedenstående være gyldig kode: call handleV.FileSaveAs("C:\temp\dummy.doc") Jeg har ikke checket koden, men det er bare for at vise dig ideen. //Jörg
Så lykkedes det og jogii du er tæt på pointene :) du gav den inspiration der skulle til før vi fandt den rigtige metode.
Call handle.SaveAs("d:\files\tmp.doc")
Men har lige et "sub" spørgsmål der er også nogle enkelte dokumenter som siger: "You need to supply the bulk encryption key to ...." når jeg forsøger at detache dem? er de virkelig blevet krypteret eller er det en eller anden fejl.
Jogii tak for det, jeg vil prøvet at kigge lidt på det.
Håber at du gider svarer hvis jeg poster endnu et indlæg her lidt senere....
Borsk
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.