DocBrowser Plus - Archivio "DOCWORD"

Software di archiviazione ottica dei documenti

L'archivio "DOCWORD", presente nel database dimostrativo, mostra le potenzialità del motore di scripting di DocBrowser.

L'archivio è stato configurato per permettere il salvataggio di alcune proprietà di documenti Microsoft Word presenti sul vostro computer per una successiva ricerca facilitata.

I campi dell'archivio si presentano come un percorso ad un file Microsoft Word e tutta una serie di informazioni sul documento stesso tra cui l'autore, il numero di pagine, la data di creazione, quella di modifica, la grandezza in bytes e un estratto delle prime righe del documento stesso.

La cosa bella è che, alla selezione di un documento Word, tutti gli altri campi vengono automaticamente impostati prendendo le informazioni dal documento stesso.

Finestra campi dell'archivio DocWord

Tutto questo è possibile grazie alla potenza del motore di scripting di DocBrowser che vi permette di personalizzare il funzionamento del programma senza alcun limite.

Vediamo, per entrare nel dettaglio, come è stato configurato il motore di scripting per recuperare automaticamente le informazioni dal documento word e impostare tali valori nei campi dell'archivio.

Il primo problema è che il controllo FileLinker è impostato, per default, per la selezione di qualsiasi tipi di documenti. Infatti la maschera di filtro sui file, che appare alla pressione del tasto nella finestra di selezione del file da includere, è impostata, per default, a (*.*) ossia a tutti i file. Ciò che si vuole fare ora è invece permettere all'utente di selezionare i soli file di tipo Microsoft Word che hanno l'estensione *.doc.  Per fare questo bisogna modificare la proprietà FileFilter del controllo FileLinker che permette di modificare la maschera di filtro sui file da includere

Aprendo il menu "Menu-Editor VBScript" andiamo quindi a dare un'occhiata al codice dell'archivio "Documenti Word" per l'evento "Campo_Ingresso". Questo evento viene eseguito ogni qual volta il cursore fa ingresso in un diverso campo dell'archivio ed è qui che è stato messo il codice per eseguire questa prima personalizzazione.

Codice VBScript in DOCWORD per evento "Campo_Ingresso"

If nomeCampo = "Percorso" Then

   ' Imposto il FileLinker in modo che mi faccia selezionare

  ' solo documenti Word

  objCampiVisuali.Item("Percorso").LinkedControl.FileFilter _

   = "Documenti Word (*.doc)|*.doc"

End If

Ricordando che dentro alla variabile "nomeCampo" c'e' il nome del campo dell'archivio che ha generato l'evento ossia che ha ricevuto il cursore e ricordando che nella variabile objCampiVisuali vi è contenuta la collezione di tutti i campi dell'archivio andiamo a prendere il campo "Percorso" tramite il codice objCampiVisuali.Item("Percorso"). Ora questo oggetto contiene incapsulato il controllo OCX FileLinker tramite la proprieta LinkedControl. Impostando quindi la proprietà FileFilter di questo controllo si ottiene la modifica della maschera di filtro nella finestra di selezione file.

Finestra di selezione file modificata in DOCWORD

Passiamo ora alla parte di codice principale. Quella che apre il documento Microsoft Word selezionato, ne estrae le proprietà fondamentali e li inserisce nei campi i video dell'archivio.

Questa sezione di codice si trova nell'evento "Campo_Uscita" che viene eseguito quando il cursore abbandona un campo dell'archivio. Prendiamo un estratto epurato di alcune sottigliezze formali

Codice VBScript in DOCWORD per evento "Campo_Uscita"

If nomecampo = "Percorso" Then

   ' Se non e' impostato alcun valore esco

   If valore = "" Then Exit Sub

   On Error Resume Next

   Set WordApp = CreateObject("Word.Application")

  WordApp.Visible = False

   ' apro il documento word

   Set doc = WordApp.Documents.Open(valore, , True)

  If Err.Number <> 0 Then

     ' Se c'e' un errore nell'apertura del file...esco

    WordApp.Quit False

     MsgBox "Il documento non esiste o non e' un documento" _
    & "Word", , "DocBrowser Plus"

     Exit Sub

  End If

   ' recupero le proprieta' da inserire nell'archivio

  txt_autore            = doc.BuiltInDocumentProperties( _

     "Author")

  dta_creazione         = doc.BuiltInDocumentProperties( _

    "Creation Date")

  dta_ultimosalvataggio = doc.BuiltInDocumentProperties( _

    "Last Save Time")

  num_pagine            = doc.BuiltInDocumentProperties( _

    "Number of Pages")

  num_bytes             = doc.BuiltInDocumentProperties( _

    "Number of Bytes")

  txt_inizio = doc.Range(0, 255).Text

   ' esco dal documento word

  WordApp.Quit False

   Set WordApp = Nothing

   ' imposto le proprieta' nei campi dell'archivio

  objCampiVisuali.Item("Autore").Value     = txt_autore

  objCampiVisuali.Item("Dta_Creazi").Value = dta_creazione

  objCampiVisuali.Item("Dta_Ultima").Value = dta_ultimosalvataggio

  objCampiVisuali.Item("Num_Pagine").Value = num_pagine

  objCampiVisuali.Item("Num_Byte").Value   = num_bytes

  objCampiVisuali.Item("Estratto").Value   = txt_inizio

   If Err.Number <> 0 Then

     MsgBox "Errore VBScript nell'esecuzione del'evento " & _

      "Campo_Uscita" & _

       vbCrLf & vbCrLf & Err.Description, , "Errore VBScript"

   End If

End If

Il codice è un po' complesso ma, andiamolo ad analizzare in dettaglio e cerchiamo di capire cosa fa.

Ovviamente il codice è valido solo se si sta uscendo dal campo "Percorso" ed ecco il perchè del primo blocco "If". Visto che, dentro alla variabile "valore" c'è il valore del campo che si sta abbandonando, ovviamente se questo campo è vuoto non si deve eseguire alcuna operazione e si deve quindi uscire dalla funzione. Ecco spiegato il secondo "If".

Quindi c'e' un Blocco "On Error ..... If Err.Number..." di protezione dagli errori in quanto si cercherà ora di aprire il documento Word selezionato che potrebbe non esistere o non essere un documento Word.

Si crea quindi l'oggetto "Word.Application" che è un oggetto ActiveX che espone il modello ad oggetti del programma Microsoft Word e gli si dice di fare l'Open di un documento con percorso "valore". Se c'e' un errore allora si invia un messaggio a video di non esistenza o di formato del file non valido e si esce.

Se tutto va bene, si procede invece al recupero di alcune proprietà del documento Word. Quelle che appaiono nella finestra "File-Proprietà" del programma Microsoft Word sono esposte dal modello ad oggetti del Word tramite la collezione BuiltInDocumentProperties. Tramite questa si ottengono il nome dell'autore, la data di creazione, la data di ultima modifica, il numero di pagine e di byte del documento. Si provvede quindi a recuperare i primi 255 caratteri testuali del documento per avere un estratto delle prime righe del documento stesso.

Visto che abbiamo finito con il documento Word usciamo senza salvare "....Quit False" e distruggiamo l'oggetto Word.Application che non ci serve più.

A questo punto siamo in grado di impostare i valori recuperati nei campi a video. Utilizzando la collezione di DocBrowser objCampiVisuali che ci espone appunto tali campi, si provvede ad usare la proprietà "Value" di ogni singolo campo visuale per associarle il corretto valore recuperato dal documento Word.

Alla fine una bella gestione degli errori nel caso sia accaduto qualcosa di imprevisto tra l'apertura del documento Word e la fine del'evento.

Per concludere, l'archivio possiede anche due voci di ricerca personalizzate per cercare documenti per testo contenuto nell'estratto recuperato dal documento o nelle eventuali note aggiunte, a mano, dall'operatore, prima del salvataggio nell'archivio. Queste due voci sono ambedue voci di ricerca dinamiche che richiedono all'atto dell'esecuzione della voce, un input dell'operatore riguardo alle parole da ricercare.