Newsgroup: it.comp.appl.access
Titolo: leggere/scrivere proprieta di un documento word

salve a tutti
vorrei avere la possibilità da Access 2000 di leggere/scrivere le
proprieta di un documento word. Ho scoperto che bisogna caricare la
libreria dsofile.dll
ho trovato il seguente codice:
Function fGetDocProps(strInFile As String, strProp As String)
Dim objWord As Object, objDocProps As Object
    On Error GoTo Err_fGetDocProps
    Set objWord = CreateObject("Word.Application")
    objWord.Documents.Open strInFile
    Set objDocProps = objWord.ActiveDocument.BuiltInDocumentProperties
    fGetDocProps = objDocProps(strProp)
Exit_fGetDocProps:
    objWord.Application.Quit savechanges:=False
    Set objDocProps = Nothing
    Set objWord = Nothing
    Exit Function
Err_fGetDocProps:
    fGetDocProps = "Error: Probably File/Property does not exist."
    Resume Exit_fGetDocProps
End Function
Function fEnumProps(strInFile As String)
Dim objWord As Object, objDocProps As Object
Dim i As Integer
    On Error Resume Next
    Set objWord = CreateObject("Word.Application")
    With objWord
        .Documents.Open strInFile
        Set objDocProps =
objWord.ActiveDocument.BuiltInDocumentProperties
        For i = 0 To objDocProps.Count - 1
            Debug.Print objDocProps(i).Name, objDocProps(i).Value
        Next i
    End With
    objWord.Application.Quit savechanges:=False
    Set objWord = Nothing
End Function
*****************************************************
per leggere le proprieta (in questo caso il titolo) del documento word
scrivo
msgbox  (fGetDocProps("C:\prova\pippo.me.doc","Title"))
non ho capito come faccio per scrivere (e quindi modificare) la stessa
proprietà
spero di essere stato chiaro
saluti
Maurizio

 ha scritto nel messaggio 
news:1192228597....@e9g2000prf.googlegroups.com...









----------  RISPOSTA  -----------------
Io ho Office 2003 e, quindi, quanto sto per dirti potrebbe non essere valido 
per Access e Word 2000... ma comunque credo che siano valide.
I riferimenti necessari da includere sono questi due:
   Microsoft Office XX.Y Object Library
   Microsoft Word XX.Y Object Library
dove XX.Y per Office 2003 sono 11.0, ma per te potrebbero essere 10.0 o 
qualcosa del genere: non mi risulta che sia necessaria quella libreria 
indicata da te.
Se riesci ad includere riferimenti come questi appena detti, dovresti poter 
definire gli oggetti Word così:
    Dim WordAppl As Word.Application, WordDoc As Word.Document
A questo punto puoi testare se Word è già stato caricato e, nel caso non lo 
sia, caricarlo in questo modo:
    Errore.Codicinonerrore = "429;"
    Set WordAppl = GetObject(, "Word.Application")
    If Errore.Erroreoccorso = 429 Then Set WordAppl = 
CreateObject("Word.Application")
ovviamente gestisci l'errore 429 (ovvero Word non è attivo) come meglio 
credi ed elimina quelle mie istruzione che lo gestiscono per mezzo di una 
classe che mi sono creato io esclusivamente a mio piacimento.
Ora hai Word attivo, ma ancora non hai preso il governo di nessun documento. 
Per vedere se è presente il documento che serve a te oppure, nel caso non ci 
sia, per generarlo puoi fare così:
    For i = 1 To WordAppl.Documents.Count
        Set WordDoc = WordAppl.Documents(i)
        If WordDoc.BuiltInDocumentProperties(wdPropertyComments).Value = 
CommentoCercato _
                    Then GoTo dopogenerazionedocumento
    Next
documentoNONtrovato:
    Arco1 = Cartellamodelli & "\" & Modelloscelto & ".dot"
    Set WordDoc = WA.Documents.Add(Arco1)
    WordDoc.BuiltInDocumentProperties(wdPropertyComments).Value = 
CommentoCercato
dopogenerazionedocumento:
nella routine suddetta io avevo cercato la proprietà "Commento", tu puoi 
utilizzare il Titolo o qualcos'altro.
Alla fine, non ti scordare di chiudere gli oggetti aperti:
    WordDoc.Close False
qui False serve a non fare salvare il documento perchè, se doveva essere 
salvato, l'avrei già fatto prima. Ovviamente tu puoi toglierlo.
    Set WordDoc = Nothing
    Set WordAppl = Nothing
E' tutto.
Ciao
Antonio


Direi che il tuo suggerimento non è corretto, o meglio potrebbe essere
dannoso...!
La tecnica dell'inserimento delle Librerie si usa solo se l'oggetto deve
ereditare EVENTI.
In tutti gli altri casi è bene fare come ha chiesto l'OP vale a dire
lasciare l'associazione
tardiva in modo da non vincolare il codice alla versione presente nel PC di
sviluppo.
Tutte le altre consideazioni che hai fatto invece mi trovano in accordo.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------


Questa cosa non la sapevo !!!
Ci credo perchè la fonte è autorevole, ma l'impossibilità di utilizzare nomi 
di oggetti "parlanti" e dover necessariamente preferire l'oggetto anonimo 
object... beh, per me questo sarebbe più che sufficiente per farmi preferire 
la definizione delle librerie.
In ogni caso, grazie per la precisazione.
Ciao
Antonio
P.S. [O.T.]
Certo che un intervento me lo sarei aspettato anche e soprattutto da 
Maurizio :-((((
non fosse altro per farci sapere se ha provato ed è andato tutto bene o se 
ha trovato difficoltà...
mah, sto proprio diventando vecchio !!!