Newsgroup: it.comp.lang.visual-basic
Titolo: Automazione Word

Salve a tutti.
Devo fare una cosa che pensavo semplicissima, ma che non riesco neanche a
spiegare :-)
Ci provo: l'utente deve compilare dei "moduli prestampati", li stampa e li
salva (pensavo come documenti Word)
Una applicazione esterna deve poter effettuare delle ricerche e dei filtri
su questi documenti basandosi su quanto scritto dall'utente negli appositi
spazi.
Fino a generare un modulo prestampato in word ci arrivo (o almeno mi
sembra), quello che non ho la minima idea di come ottenere è ricavare i
dati che l'utente ha inserito.
Qualcuno ha qualche idea in merito?
 
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Qualcuno ha qualche idea in merito?
Word può andare benissimo.
Tale applicativo ha una funzionalità di sostituzione di campi, ossia 
l'utente assegna dei valori a delle variabili di documento, e questi valori 
appaiono nella posizione dove tu hai messo la variabile stessa (se fai 
Alt+F9 su un documento un po' pieno di cose strane, ti si illuminerà un 
mondo sulla sintassi di Word).
In sostanza, potresti quindi preparare un documento con tutte le sue 
variabilini, che sono ovviamente leggibili via Ole nell'object model di Word 
stesso (sono una collection, che però adesso non ricordo, ma se traffichi un 
po' col registratore di macro ti salta all'occhio).
Oppure, molto più banalmente, potresti mettere dei bookmark nascosti nei 
punti chiave del documento.
Con la funzionalità "Vai a...", che credo sia F5, puoi spostarti rapidamente 
da un punto qualunque ad un bookmark. E, se prima di fare F5, attivi il 
registratore di macro, troverai anche il modo per piazzare, Ole-sticamente 
parlando, il cursore presso un bookmark.
Ciao
Alberto
-- 
E tutto mi sembrava andasse bene... 

 Qualcuno ha qualche idea in merito?
Non sò se quanto ti espongo possa aiutarti, tieni presente che
nella Maschera ho i Controlli OMONIMI ai Campi del Recordset
per velocizzare la popolazione dei campi di Word:
   For Each fld In mRs.Fields
      If Me.Controls(fld.Name).TAG = "WRITE" Then
         If Not IsNothing(Me.Controls(fld.Name).Value) Then
            If wordDoc.Bookmarks.Exists(fld.Name) Then
               wordDoc.Bookmarks(fld.Name).Select
               wordApp.Selection.TypeText
Text:=Me.Controls(fld.Name).Value
            End If
         End If
      End If
   Next
 
L'utilizzo nasce dall'uso in Word dei Bookmarks che sono una
Collection e di conseguenza enumerabili.
Sfruttandoli come da codice via Automazione(late Binding) riesco
con queste poche righe di codice a compilare i campi esistenti.
A questo punto essendoci i Bookmarks leggerli è altrettanto
semplice che scriverli, ti basta iterare la collection
Bookmarks indicizzandoli e leggendo il contenuto.
Spero sia utile.
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Qualcuno ha qualche idea in merito?
Ti riporto la mia esperienza in merito:
Uno dei nostri uffici aveva la necessità di 'compilare' dei modelli (dot) 
di Word in modo molto semplice e senza la necessità di installare alcun 
programma sul client.
La soluzione è stata quella di utilizzare i campi modulo di Word (in 
modelli protetti) e scrivere un pò di codice VBA per prelevare il 
contenuto di questi campi ed inserirlo in una tabella di SQL Server.
Il risultato finale è ovviamente un pochino più complesso in quanto 
abbiamo effettuanto anche l' "override" della funzione salva di Word, 
sostituendo con una nostra procedura ad hoc che provvedere anche ad 
assegnare al documento un numero automatico di protocollo, oltre che a 
salvare il documento stesso su uno share di rete.
In pratica, abbiamo che:
1) L'utente apre il template di word (contenente anche la macro VBA)
2) Compila i campi modulo (che, tra l'altro, dispongono anche di una serie 
di sistemi di validazione e di selezione di valori predefiniti)
3) Nel momento del salvataggio, non deve preoccuparsi nè di dove il 
documento verrà salvato, nè di assegnare un numero identificativo al 
documento stesso. In più, i dati inseriti nei campi modulo, vengono 
archiviati in specifiche tabella per una successiva manipolazione.
Si tratta in sostanza di utilizzare Word come 'GUI' per l'inserimento dei 
dati, con il vantaggio di poter intervenire sulla formattazione del testo 
e lavorare in stile 'documento'...
Ciao!
-- 
Gianluca Cannalire
Microsoft MVP/MCP - Visual Basic
http://www.visual-basic.it
http://community.visual-basic.it/gianluca

 archiviati in specifiche tabella per una successiva manipolazione.
Grazie a tutti. Ci sono abbastanza spunti per fare un bel lavoretto, direi.
Peccato che non abbia alcuna voglia di farlo :-(
