Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Compilazione di tabelle word da access

403 views
Skip to first unread message

bcla

unread,
Jul 23, 2010, 5:13:42 AM7/23/10
to
ciao a tutti.
sto utilizzando il modulo di "Namor" per la compilazione di Word da
access

ho modificato le voci che mi interessavano e tolto quelle in più nella
parte dello specchio che mi interessava. Ora però dovrei far scrivere
all'interno di cella di una tabella in word i dati di presi da una
sotto maschera.

ho la form di access basata su una tabella dove prende i dati relativi
ad un corso all'interno di questa c'è una sottomaschera che elenca gli
studenti di questo corso.
Per la prima parte come ho detto ho risolto mi rimane di inserire i
dati della sottomaschera (che poi sarebbe un solo campo "nominativo")
in un foglio di word dove mi trovo una tabella e in una colonna vanni
inseriti i nominativi dei partecipanti.

io ho già inserito nel modello di word i bookmark denominandoli
<Studente>, <Studente1> e così via fino in fondo allo specchio, uno
per cella.

però non riesco a capire come fare ad abbinare il primo nominativo
della sottomaschera a <Studente> , il secondo a <Studente1> e così
via..

qualcuno mi potrebbe aiutare?

Grazie
Bcla

Riccardo Baldinotti

unread,
Jul 26, 2010, 3:38:23 AM7/26/10
to

Nell'esempio di namor, che ho scopiazzato anch'io, all'avvio si apre
un modulo contenente le istruzioni. Mi par di capire che devi stendere
un elenco contenente alcuni nomi presi dalla tua sottomaschera, in tal
caso vai a vedere cosa dice della distinzione fra 'campi modulo' e
'segnalibri'. A te serve la parte di codice, contenuta sotto il
pulsante "Esporta", che inizia dal commento "'esportazione Elenco
prodotti:", in cui non riempie dei singoli campi ma scrive tante righe
quante servono.
In realtà il segnalibro è uno solo, in cui scrivi tutte le righe che
ti servono.
Ciao
Riccardo Baldinotti

bcla

unread,
Jul 26, 2010, 12:56:37 PM7/26/10
to

si questa parte di codice mi funziona già l'unico problema che ho e
nella parte che riguarda un elenco di nomi (presi dalla sottomaschera)
da inserire nelle varie celle di word dall'alto verso il basso e
tutte in automatico.
Non so se mi sono spiegato.

bcla

Riccardo Baldinotti

unread,
Jul 27, 2010, 5:31:21 AM7/27/10
to

> bcla-


È esattamente quello che ti dicevo. Se guardi l'esempio, la parte che
ti ho indicato è proprio quella che prende i dati dalla sottomaschera.
Non c'è bisogno di mettere un campo modulo per ogni riga, anche perché
potresti non sapere quante saranno.
In particolare, la parte che inizia da " 'apertura del recordset "
nell'evento SuClick del pulsante Esporta, apre il recordset e compila
tutte le righe che servono.
Riccardo Baldinotti

bcla

unread,
Aug 2, 2010, 5:10:43 AM8/2/10
to
cut


> È esattamente quello che ti dicevo. Se guardi l'esempio, la parte che
> ti ho indicato è proprio quella che prende i dati dalla sottomaschera.
> Non c'è bisogno di mettere un campo modulo per ogni riga, anche perché
> potresti non sapere quante saranno.
> In particolare, la parte che inizia da " 'apertura del recordset "
> nell'evento SuClick del pulsante Esporta, apre il recordset e compila
> tutte le righe che servono.
> Riccardo Baldinotti


Non mi va---
ho fatto così ma niente, mi da esportazione terminata ma senza
compilare i nomi degli studenti
____

Doc.Bookmarks("Studente").Select
pausa

'apertura del recordset
SQL = "SELECT * FROM tblFrequentatori WHERE ID=" & Me.ID & _
" ORDER BY Studente;"
Set Rst = CurrentDb.OpenRecordset(SQL)

pausa
'ciclo sul recordset
With Rst
Totale = 0 '
.MoveFirst 'posizionati sul primo record
While Not .EOF 'ripeti fino alla fine del recordset:

pausa
.MoveNext 'passa al prossimo record
Wend 'Not .EOF
End With 'Rst
Rst.Close: Set Rst = Nothing
'"Sostituisci la selezione"
Wrd.Options.ReplaceSelection = ReplSel

Wrd.Application.WordBasic.MsgBox "Esportazione terminata",
"Esportazione dati da Access"

Riccardo Baldinotti

unread,
Aug 2, 2010, 9:47:36 AM8/2/10
to
On 2 Ago, 11:10, bcla <brotto...@gmail.com> wrote:
>             While Not .EOF 'ripeti fino alla fine del recordset:
>
> pausa
>                 .MoveNext 'passa al prossimo record

Io però non vedo cosa scrivi, subito prima di "pausa", cioè
l'equivalente delle righe:
TotRiga = Nz(!Quantita) * Nz(!prezzo)
Record = Tbl & Format(!Data, "ddd dd.mm.yyyy") & Tbl &
_
!Prodotto & Tbl & _
!Um & Tbl & _
Format(Nz(!Quantita), "#,##0.00") & Tbl & _
Format(Nz(!prezzo), "#,##0.00") & Tbl & _
Format(TotRiga, "#,##0.00")
Wrd.Selection.TypeText Record & vbCrLf 'scrivi la riga
nell'esempio.
Quelle righe scrivono 6 campi. Se a te serve il solo campo
<nominativo>, allora sarà un comando così:
Wrd.Selection.TypeText Rst!nominativo & vbCrLf 'scrivi
la riga
Ricapitolando:


While Not .EOF 'ripeti fino alla fine del recordset:

Wrd.Selection.TypeText Rst!nominativo & vbCrLf
'scrivi la riga


.MoveNext 'passa al prossimo record

I comandi "pausa" servono solo per mostrare chiaramente l'esempio e
puoi toglierli

Ciao
Riccardo Baldinotti

bcla

unread,
Aug 3, 2010, 12:53:20 AM8/3/10
to
On 2 Ago, 15:47, Riccardo Baldinotti <barimo...@gmail.com> wrote:


allego la parte di codice:

'esportazione Studenti:
'selezione del punto di inserimento
Doc.Bookmarks("Studente").Select

'apertura del recordset
'(apro un nuovo recordset per poter impostare l'ordinamento,


SQL = "SELECT * FROM tblFrequentatori WHERE ID=" & Me.ID & _
" ORDER BY Studente;"
Set Rst = CurrentDb.OpenRecordset(SQL)

'ciclo sul recordset ed esportazione di tutte le righe


With Rst
Totale = 0 '
.MoveFirst 'posizionati sul primo record

While Not .EOF 'ripeti fino alla fine del recordset:

Wrd.Selection.TypeText Rst!Studente & vbCrLf ' scrivi la
riga

.MoveNext 'passa al prossimo record

Wend 'Not .EOF
End With 'Rst

'chiudi e azzera il recordset


Rst.Close: Set Rst = Nothing

----

il problema è che mi compila solo il primo nome e non gli altri
perchè dovendo scriverli all'interno di una cella (uno per cella) uno
sotto l'altro il comando vbCrLf non mi va bene perchè mi va a capo
all'interno della stessa cella.

ora pensavo o di ripetere Wrd.Selection.TypeText Rst!Studente &
vbCrLf ' più volte tante quante sono le celle da riempire modificando
"Studente" in Studente1, Studente 2 ecc.

oppure dovrei calcolare tante quante sono le tabulazioni per portarmi
sulla cella seguente e utilizzare TAB ?

devo fare qualche prova.
bcla

Riccardo Baldinotti

unread,
Aug 3, 2010, 5:21:43 AM8/3/10
to
> bcla- Nascondi testo citato
>
> - Mostra testo citato -

Secondo me hai inserito un campo modulo e non un segnalibro.
Nelle istruzioni del file che usiamo di esempio è descritta la
differenza.
Che versione di Access usi?
Riccardo Baldinotti

bcla

unread,
Aug 3, 2010, 6:02:26 AM8/3/10
to
On 3 Ago, 11:21, Riccardo Baldinotti <barimo...@gmail.com> wrote:
> Riccardo Baldinotti- Nascondi testo citato

>
> - Mostra testo citato -

Access 2003 e ho inserito un segnalibro non un campo modulo

Bcla

Riccardo Baldinotti

unread,
Aug 3, 2010, 7:47:23 AM8/3/10
to
On 3 Ago, 12:02, bcla <brotto...@gmail.com> wrote:

In effetti, leggendo meglio mi accorgo che il problema è quella
"cella" nel documento Word. L'esempio scrive n righe di testo, non
all'interno di una cella; ti riferisci a una tabella? Perché mi sembra
che non sia necessaria in quanto il tuo singolo dato viene messo in
elenco. Come vedi, l'esempio non ha tabelle.
Allora faccio un'ipotesi: la tabella ti serve perché il documento ha
dei campi vuoti che poi vanno compilati a mano? Potresti limitarti a
scrivere le intestazioni e poi modificare la riga, per esempio, così:
Record = Tbl & Rst!Studente & Tbl & _
"_____" & Tbl & _
"_____" & Tbl & _
"_____" & Tbl & _
"_____" & Tbl & _
"_____"
Wrd.Selection.TypeText Record & vbCrLf
In pratica scrivendo il tuo nominativo e poi n campi con una
sottolineatura lunga quanto serve per ogni campo aggiuntivo (io ne ho
messi cinque), separati da tabulazioni.
Altrimenti, penso anch'io che ti convenga mettere tanti campi modulo
quante sono le tue righe, dare ad essi un nome St1, St2 eccetera, e
ciclare sui record così:
With Rst
.MoveFirst
u=1
While Not .EOF
Doc.Bookmarks("St" & u).Select
Wrd.Selection.TypeText Rst!Studente
.MoveNext
u=u+1
Wend
End With
Lo svantaggio è che devi avere un numero predeterminato di righe, cioè
sapere a priori quanti "StXX" ti servono.
Spero di avere capito.
Riccardo Baldinotti

mau_rizio

unread,
Aug 3, 2010, 8:52:24 AM8/3/10
to
Scusate, potreste linkare questo modulo di Namor?

grazie mille
mau

mau_rizio

unread,
Aug 3, 2010, 9:00:18 AM8/3/10
to
>
> oppure dovrei calcolare tante quante sono le tabulazioni per portarmi
> sulla cella seguente e utilizzare TAB ?
>
Secondo me e' il metodo migliore, oltretutto ti aggiunge automatimente
una riga nuova quando arrivi a fine tabella.

ciao
mau

Riccardo Baldinotti

unread,
Aug 3, 2010, 9:04:48 AM8/3/10
to

Su http://www.sitocomune.com/, nella sezione General, è l'esempio
"6.137 Esempio di automazione per l'invio e la formattazione di dati
da Access a Word usando i bookmarks".
Riccardo Baldinotti

mau_rizio

unread,
Aug 3, 2010, 9:09:29 AM8/3/10
to
On 3 Ago, 15:04, Riccardo Baldinotti <barimo...@gmail.com> wrote:
> On 3 Ago, 14:52, mau_rizio <alter...@yahoo.it> wrote:
>
> > Scusate, potreste linkare questo modulo di Namor?
>
> > grazie mille
> > mau
>
> Suhttp://www.sitocomune.com/, nella sezione General, è l'esempio

> "6.137 Esempio di automazione per l'invio e la formattazione di dati
> da Access a Word usando i bookmarks".
> Riccardo Baldinotti

Grazie
mau

bcla

unread,
Aug 4, 2010, 6:10:30 AM8/4/10
to
On 3 Ago, 13:47, Riccardo Baldinotti <barimo...@gmail.com> wrote:

Si proprio quello che volevo fare ma mi si bloccava sempre dopo averne
inserito 2 o 3.
Grazie

0 new messages