Avatar billede tma Juniormester
08. juni 2007 - 13:51 Der er 8 kommentarer og
1 løsning

Aflæse egenskaber fra Word

Hej
Jeg vil gerne kunne aflæse egenskaber fra Word hurtigt. Jeg kan godt gøre det med:

    Dim WrdObj As Word.Application, D As Word.Document
    Set WrdObj = CreateObject("Word.Application")
    Set D = WrdObj.Documents.Open(FN)
    lblcomment.Caption = D.BuiltInDocumentProperties(wdPropertyComments).Value

Men synes at det tager for lang tid (word start osv..)

Kan man bruge FileSystemObject til at aflæse denne form for egenskaber? Eller evt. anden metode?
Avatar billede kjulius Novice
08. juni 2007 - 15:32 #1
Jeg vil anbefale dig at kigge på dsofile.dll, som er en lille DLL, som Microsoft har udviklet til netop at hente (eller sågar ændre) properties fra office-dokumenter. Du kan downloade den sammen med eksempler på, hvordan den skal bruges i bl.a. VB6 fra Microsoft download.

http://support.microsoft.com/kb/224351
Avatar billede kjulius Novice
08. juni 2007 - 18:18 #2
Da jeg ikke selv har prøvet at bruge denne DLL, installerede jeg den lille test-installation fra Microsoft. Under installationen blev DLL'en automatisk registreret, og kunne herefter findes under referencer (navnet DSO OLE Properties Reader 2.1").

Jeg afprøvede kort funktionen i Access, hvor den fungerer udmærket. Først satte jeg et tjek ud for ovennævnte under referencer. Herefter lavede jeg (med udgangspunkt i eksemplerne fra Microsoft følgende lille subrutine:

' Uses reference to "DSO OLE Document Properties Reader 2.1"
Private m_oDocumentProps As DSOFile.OleDocumentProperties
Public Sub testafdll()
Dim fOpenReadOnly As Boolean

' Create an instance of the DSOFile Object...
Set m_oDocumentProps = New DSOFile.OleDocumentProperties

' Lists both Summary and Custom Properties...
Dim oSummProps As DSOFile.SummaryProperties
 

m_oDocumentProps.Open "C:\temp\Test.doc" & Chr(0), fOpenReadOnly, dsoOptionOpenReadOnlyIfNoWriteAccess
 
' We just display the file name for the caption...
MsgBox m_oDocumentProps.Name, , "Dokumentnavn"

' Get the SummaryProperties (these are built-in set)...
Set oSummProps = m_oDocumentProps.SummaryProperties

MsgBox oSummProps.Title, , "Dokument-titel"
MsgBox oSummProps.Author, , "Forfatter"
MsgBox oSummProps.Comments, , "Kommentarer"
MsgBox oSummProps.Subject, , "Emne"

m_oDocumentProps.Close

Set m_oDocumentProps = Nothing
Set oSummProps = Nothing

End Sub

Da jeg kørte rutinen, blev de aktuelle egenskaber fra test-dokumentet vist uden problemer. Så det virker - og det er hurtigt....
Avatar billede kjulius Novice
08. juni 2007 - 18:25 #3
PS. Det er ikke nødvendigt at tilføje et chr(0) efter filnavnet, sådan som der står i min kode.
Avatar billede tma Juniormester
08. juni 2007 - 21:29 #4
Hvordan med hastigheden? Er det en hurtig aflæsning?
Avatar billede kjulius Novice
08. juni 2007 - 23:37 #5
Tja, jeg synes da det går hurtigt. Men kode med msgbox er bare ikke så god til at dokumentere det, så jeg har ændret alle msgbox til debug.print i stedet. Den brugte tid har jeg udretnet vedt at gemme Timer i starten og trække den værdi fra Timer ved slutningen. Resultatet:

Call testafdll

Dokumentnavn: Test.doc
Dokument-titel: Bare en lille test…
Forfatter: kjulius
Kommentarer: Tja, hvad skal jeg sige...
Emne: Test af DLL

Brugt tid: 0,015625 sekund

Det synes jeg da er en respektabel tid for at åbne filen, finde og udskrive properties og lukke filen igen.
Avatar billede tma Juniormester
09. juni 2007 - 10:15 #6
Ja, det er ikke så tosset.
Jeg kan først afprøve mandag, men det ser jo ud til at virke fint, så hvis du ligger et svar, så skal jeg lukke spørgsmålet. Jeg regner med, at du lige kikker med hvis jeg har spørgsmål mandag.
Avatar billede kjulius Novice
09. juni 2007 - 10:19 #7
Okay...
Avatar billede kjulius Novice
02. august 2007 - 17:51 #8
Hvordan går det?
Avatar billede tma Juniormester
06. august 2007 - 08:30 #9
Ups, havde glemt at svare...

Det fungerer fint med dll-filen.

Hilsen Torben
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester