Newsgroup: it.comp.appl.access
Titolo: Raccolta dati con Word (4)

Il mio utente ha mandato in giro un file Word protetto con una serie
di campi segnalibro (oltre 300) per raccogliere dati da centinaia di
aziende.
Vuole che io realizzi un programma con ACCESS per estrarre i dati dai
file
che ritorneranno compilati ed inserirli in un database.
Vorrei sapere se qualcuno ha esperienze in merito ed ha dei pezzi di
codici di esempio.
Io gli avevo già realizzato qualche cosa di simile con ACCESS per
raccogliere i dati da fogli EXCEL, e lui adesso mi ha chiesto di
recuperargli i dati da file Word (che è più diffuso e già presente in
boundle su diversi PC).
Confermo a Sergio Mazza e a Luciani che sono convinto di avere la guida
di Visual Basic di cui do l'inizio dei contenuti per una verifica:
- Guida all'interfaccia utente di Visual Basic
- Procedure di Visual Basic
- Riferimenti al linguaggio di Visual Basic
...
- Guida di riferimento di Visual Basic per Microsoft Word
- Guida di riferimento di Visual Basic per Microsoft Excel
- Guida di riferimento di Visual Basic per Microsoft PowerPoint
Ho scaricato vari help sul sito di Microsoft tra cui Auto97.exe con cui
sono arrivato ad avere negli appunti il valore di ogni singolo campo.
- Come posso incollare (paste) su una variabile ?
- E' possiile fare un loop con cui memorizzare i valori corrispondenti
ai segnalibri su nomi di campi equivalenti di un database (anzi 2 perchè
i segnalibri sono oltre 300 e il numero massimo di campi di una tabella
mi pare sia 256).
Mi spiego se il campo del segnalibro è "Cognome" vorrei memorizzarlo in
Tabella1.Cognome o se non esiste Tabella1.Cognome provare in
Tabella2.Cognome.
Segue codice attuale:
'Esempio di automazione con MSWord(97) 'Autore: Federico Luciani, ...
Private Sub ComandoImporta_Click()
    Dim wordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim aVar As Variant
    Dim blOpen As Boolean
    Dim strNome As String
    Dim WordRange As Word.Range
    Dim I As Variant
    On Error Resume Next
    blOpen = True
    Set wordApp = GetObject(, "Word.Application")
    If Err.Number = 429 Then
        Set wordApp = CreateObject("Word.Application")
        blOpen = False
        Err.Number = 0
    End If
    On Error GoTo gestErrori
    Set WordDoc =
wordApp.Documents.Open("C:\MSOFFICE\ACCESS\QMAT99C.doc")
    wordApp.Visible = True
    strNome = WordDoc.Bookmarks(1)  'Restituisce il nome del primo
segnalibro
    For Each I In WordDoc.Bookmarks
        strNome = WordDoc.Bookmarks(I)
        Set WordRange = WordDoc.Goto(What:=wdGoToBookmark,
Name:=strNome)
        WordRange.Copy	'qui ho i valori di ogni singolo campo
    Next I
    If Not blOpen Then
        WordDoc.Close savechanges:=False
        wordApp.Application.Quit
    End If
esci:
    Set WordDoc = Nothing
    Set wordApp = Nothing
    Exit Sub
gestErrori:
    MsgBox Err.Number & " - " & Err.Description
    GoTo esci
 End Sub
--------------------------------------------------------------------
Sergio de Pretis                     E-mail 
depr...@csgen.it
Via Meli, 18                         phone / fax : (39) 02 2592400
20127 MILANO -  ITALY                mobile phone: (39) 0335 8381706

 ...
Guardati questo pezzo di codice. Non ho molto tempo quindi
spero sia chiaro!
Si presuppone che il nome del segnalibro sia uguale al nome
del campo nella Tabella1
...
...
Dim bkm As Bookmark
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Tabella1", dbOpenDynaset)
With wordDoc
   rst.AddNew
   For Each bkm In .Bookmarks
      bkm.Select
      rst(
bkm.name
) = wordApp.Selection.Text
   Next bkm
   rst.Update
End With
rst.Close
Set dbs = Nothing
...
...
PS
Non credo sia il modo migliore, ma ...
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------