Newsgroup: it.comp.appl.access
Titolo: Associare file word a record access

Ringrazio anticipatamente tutti per l�aiuto.
Ho creato una maschera dove inserendo i dati finiscono in una tabella, 
questi dati, tramite un pulsante "esporta" vengono esportati in Word ed in 
automatico Word mi salva il documento con l�estenzione
"nometabella_id(contatore).doc" . Ora vorrei che questo file che crea, venga 
associato al record in automatico.
Manualmente sono riuscito creando un oggetto Ole ed a questo manualmente 
associo il file.
Io vorrei che questo accadesse in automatico.
Grazie..... 

 ha scritto nel messaggio 
news:4a47df40$0$30237$9b4e...@newsspool1.arcor-online.net...

Se ti salva il documento "in automatico", ti basta scrivere in un campo il 
path+nomeFile. Non ti serve il campo OLE; perch� in questo caso non ti serve 
il salvataggio del file di disco...
Ciao.
-- 
Sergio MAZZA 

 schrieb im Newsbeitrag 
news:4a4867bd$0$703$5fc...@news.tiscali.it...


 schrieb im Newsbeitrag 
news:4a4867bd$0$703$5fc...@news.tiscali.it...


 Grazie.
Per favore scrivi in coda al messaggio precedente, come sto facendo io; 
grazie (
www.sitocomune.com
 Sezione ICAA - Come comportarsi in questo NG).
Scusa hai scritto: "...vengono esportati in Word ed in automatico Word mi 
salva il documento con l�estenzione "nometabella_id(contatore).doc" . "; 
come succede tutto questo?
Riporta qui il codice che utilizzi...
Ciao.
-- 
Sergio MAZZA

Grazie anticipatamente.
Questo � il codice che utilizzo in basso a tutto c� il codice che salva il 
file :
Private Sub Comando36_Click()
Dim Wrd As Word.Application, Doc As Word.Document
Dim Rst As DAO.Recordset
Dim Modello As String, NomeFile As String, i As Integer
Dim Record As String, SQL As String
Dim Tbl As String * 1
Dim TotRiga As Currency, Totale As Currency
Dim ReplSel As Boolean
    'Trova il nome, completo di percorso, del modello word
    '("Lettera.dot" nella stessa cartella del database)
    Modello = CurrentDb.Name
    Modello = Left(Modello, Len(Modello) - Len(Dir(Modello))) & "copertura 
finanziaria.dot"
    On Error Resume Next 'gestione errori step by step
    'cerca un'istanza di Word gi� aperta
    Set Wrd = GetObject(, "Word.Application")
    If Err.Number = 429 Then
        'se c'� stato un errore � perch� Word non era gi� aperto:
        'aprilo adesso
        Set Wrd = CreateObject("Word.Application")
    End If
    On Error GoTo 0 'ripristina la segnalazione degli errori
    'rendi visibile la finestra di Word:
    Wrd.Visible = True
    'attiva Word e portalo in primo piano:
    Wrd.Activate
    'abilita l'opzione "Sostituisci la selezione". Se non fosse
    'attiva, i campi modulo rimarrebbero all'interno del testo.
    ReplSel = Wrd.Options.ReplaceSelection
    Wrd.Options.ReplaceSelection = True
    'Apri un nuovo documento basato sul modello:
    Set Doc = Wrd.Documents.Add(Modello)
    'attivalo e portalo in primo piano:
    Doc.Activate
pausa
    'seleziona il bookmark del primo campo ufficio :
    Doc.Bookmarks("ufficio").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'ufficio:
    Wrd.Selection.TypeText Me.CasellaCombinata38
pausa
    'seleziona il bookmark del primo campo numero :
    Doc.Bookmarks("numero").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'numero:
    Wrd.Selection.TypeText Me.Numero
pausa
    'seleziona il bookmark del primo campo data :
    Doc.Bookmarks("data").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'data:
    Wrd.Selection.TypeText Me.Data
pausa
    'seleziona il bookmark del primo campo oggetto:
    Doc.Bookmarks("oggetto").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'oggetto:
    Wrd.Selection.TypeText Me.oggetto
pausa
    'seleziona il bookmark del primo campo preventivo n.:
    Doc.Bookmarks("prev").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'preventivo n.:
    Wrd.Selection.TypeText Me.preven
pausa
    'seleziona il bookmark del primo campo data preventivo:
    Doc.Bookmarks("datap").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'data preventivo:
    Wrd.Selection.TypeText Me.dataprev
pausa
    'seleziona il bookmark del primo campo protocollo:
    Doc.Bookmarks("prot").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'protocollo:
    Wrd.Selection.TypeText Me.prot
pausa
    'seleziona il bookmark del primo campo data protocollo:
    Doc.Bookmarks("dataprev").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'data protocollo:
    Wrd.Selection.TypeText Me.dataprot
pausa
    'seleziona il bookmark del primo campo creditore:
    Doc.Bookmarks("creditore").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'Creditore:
    Wrd.Selection.TypeText Me.CasellaCombinata33
pausa
    'seleziona il bookmark del primo campo importo:
    Doc.Bookmarks("importo").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'importo:
    Wrd.Selection.TypeText Me.importo
pausa
    'seleziona il bookmark del primo campo responsabile servizio:
    Doc.Bookmarks("respserv").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'responsabile servizio:
    Wrd.Selection.TypeText Me.CasellaCombinata44
pausa
    'seleziona il bookmark del primo campo importo:
    Doc.Bookmarks("importo1").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'importo:
    Wrd.Selection.TypeText Me.importo
pausa
    'seleziona il bookmark del primo campo intervento:
    Doc.Bookmarks("intervento").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'intervento:
    Wrd.Selection.TypeText Me.intervento
pausa
    'seleziona il bookmark del primo campo capitolo:
    Doc.Bookmarks("cap").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'capitolo:
    Wrd.Selection.TypeText Me.capitolo
pausa
    'seleziona il bookmark del primo campo impegno n:
    Doc.Bookmarks("imp").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'impegno n:
    Wrd.Selection.TypeText Me.impegnon
pausa
    'seleziona il bookmark del primo campo responsabile finanziario:
    Doc.Bookmarks("respfin").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'responsabile servizio finanziario:
    Wrd.Selection.TypeText Me.respfin
    'ripristina il valore originario dell'opzione
    '"Sostituisci la selezione"
    Wrd.Options.ReplaceSelection = ReplSel
    'avvisa l'utente che l'esportazione � terminata
    Wrd.Application.WordBasic.MsgBox "Esportazione terminata", "Esportazione 
dati da Access"
    ''per SALVARE il documento come Lettera_<IDcliente>_<progressivo>.doc:
    NomeFile = Left(Modello, Len(Modello) - 4) & "_" & Format(Me.Numero, 
"000") & "_"
    ''cerca il primo progressivo disponibile per l'IDcliente selezionato
    i = 1
    While Len(Dir(NomeFile & Format(i, "000") & ".doc")) > 0
        i = i + 1
    Wend
    Doc.SaveAs NomeFile & Format(i, "000") & ".doc"
End Sub 

 End Sub
Il nome del file non � questo: NomeFile & Format(i, "000") & ".doc"?
Ciao.
-- 
Sergio MAZZA 


Il nome file che salva � : nomefile(modello 
word)_id(contatore)_000(progressivo).doc
Ciao. 

In pratica il codice che utilizzo � un esempio creato dal Signor Marco 
(Namor).
"Esempio di uso dell'Automazione per l'invio e la formattazione di dati in 
Microsoft Word, usando i Bookmarks di Word per identificare le posizioni in 
cui inserire i dati".
Grazie 

 Ciao.
Ma se conosci l'istruzione che fa quello che chiedi, dove sta il problema?
Da quello che vedo nel codice utilizzi, per riempire il documento word, i 
dati visualizzati al momento sulla maschera; se vuoi associare a quel record 
il nome del file word appena generato, in un campo [nomeFile] (di tipo 
testo) non farai altro che fare:
...
    Doc.SaveAs NomeFile & Format(i, "000") & ".doc"
    Me!nomeFile = NomeFile & Format(i, "000") & ".doc"
    Me.Refresh '<-- se vuoi scrivere subito le modifiche al record
End Sub
...
Ciao.
-- 
Sergio MAZZA 

Ho creato nella tabella un campo di tipo testo chiamandolo "Nomefile". Ma 
ora dove devo scrivere il codice che mi hai consigliato? Ho provato ad 
aggiungerlo al codice del  pulsante che mi esporta i dati in word, ma mi da 
sempre errore runtime 3163 sul rigo Me!nomefile = nomefile & Format(i, 
"000") & ".doc" .
Grazie della pazienza. 

Nessuno pu� darmi una mano? Vi ringranzio infinitamente se qualcuno pu� 
darmi un consiglio!! � urgente.  Grazie 

 ha scritto nel messaggio 
news:4a4bb125$0$31327$9b4e...@newsspool4.arcor-online.net...

Ma la maschera da dove esegui il codice � associata alla tabella?
Ciao.
-- 
Sergio MAZZA 

Si la maschera � associata alla tabella. Nella tabella ho creato il campo 
nomefile. Grazie. 

 nomefile. Grazie.
Allora, come ti ho gi� proposto, questo esempio dovrebbe fare quello che 
chiedi:


 ha scritto nel messaggio 
news:h2k89l$ch0$1...@tdi.cu.mi.it...

Ciao a tutti, e ciao a Sergio,
leggendo dall'esterno la discussione mi viene un dubbio: ma esiste nella 
maschera il campo Me!nomeFile, o voleva scriverlo direttamente nella 
tabella?
Ciao Valerio.

 Ciao Valerio.
Se voleva scrivere in un campo ole il documento word, presumo che abbia 
capito che per ogni record dovrï¿½ salvare il nome del file doc generato nel 
campo "nomeFile".
A quanto dice il campo "nomeFile" di tipo testo, in tabella non esisteva e 
poi l'ha creato; ora se la form ï¿½ associata direttamente alla tabella, se 
ricordo bene, non ha bisogno di inserire una casella di testo associata al 
campo "nomeFile"; il riferimento Me!nomeFile c'ï¿½ giï¿½. Diverso ï¿½ il caso se 
ha associato la form ad una query che non comprende il nuovo campo 
"nomeFile"...
Ciao.
-- 
Sergio MAZZA 

 schrieb im Newsbeitrag 
news:h2kg9m$j0d$1...@tdi.cu.mi.it...


 Grazie.
Per favore scrivi la risposta in coda al messaggio precedente, come faccio 
io; grazie. (
www.sitocomune.com
 - Sezione ICAA - Come comportarsi in questo 
NG.
Una prova semplice semplice ï¿½ assegnare alla casella di testo una qualsiasi 
stringa:
...
Me!nomeFile = "c:\documenti\prova.doc"
...
Se anche qui ti presenta errore bisognerï¿½ trovare un esorcista.
Re-invia il codice (Tutto) che esegui per creare il documento word...
Ciao.
-- 
Sergio MAZZA 

 schrieb im Newsbeitrag 
news:4a47df40$0$30237$9b4e...@newsspool1.arcor-online.net...


 Sergio MAZZA
Ho imparato qualcosa di nuovo. Ciao e grazie. 

Ho fatto la prova che mi hai detto.
Cosi funziona perfettamente! : nel campo "nome file" compare
c:\documenti\prova.doc, senza che esca nessun errore.
Il codice che eseguo � questo:
Private Sub Comando36_Click()
Dim Wrd As Word.Application, Doc As Word.Document
Dim Rst As DAO.Recordset
Dim Modello As String, nomefile As String, i As Integer






    Wrd.Selection.TypeText Me.data



    ''per SALVARE il documento come Lettera_<IDcliente>.doc:
    nomefile = Left(Modello, Len(Modello) - 4) & "_" & Format(Me.Numero) &
"_"
    Doc.SaveAs nomefile & Format("2009") & ".doc"
    Me!nomefil = "c:\documenti\prova.doc"
    Me.Refresh '<-- se vuoi scrivere subito le modifiche al record


 c:\documenti\prova.doc, senza che esca nessun errore.
Quindi la costruzione della stringa del nome del file non � corretta.
Per vedere cosa viene scritto visualizza la finestra immediata (CTRL-G) e 
inserisci l'istruzione che stampa il contenuto nella finestra:
...
'per SALVARE il documento come Lettera_<IDcliente>.doc:
nomefile = Left(Modello, Len(Modello) - 4) & "_" & Format(Me.Numero) & "_"
debug.print  nomefile '<-- scrive nella finestra immediata
exit sub '<-- termina l'esecuzione della sub
Doc.SaveAs nomefile & Format("2009") & ".doc"


 schrieb im Newsbeitrag 
news:4a50581b$1$6840$5fc...@news.tiscali.it...


 Grazie infinitamente.....
S�, vabb� ma ti avevo chiesto di rispondere in coda al messaggio precedente!
Comunque; per evitare futuri problemi con la lunghezza dei percorsi (un path 
 >50 caratteri non � semplice da gestire), spezza in 2 le informazioni 
creando 2 nuovi campi in tabella:
- path, 255 caratteri, testo
- nomeFile, 255 caratteri, testo
Che se ho capito bene il codice il path lo trovi nella variabile Modello; 
quindi:
...
    Doc.SaveAs nomefile & Format("2009") & ".doc"
    Me!path =  Left(nomefile & Format("2009") & ".doc", InStrRev(nomefile & 
Format("2009") & ".doc", "\"))
    Me!nomefile = mid(nomefile & Format("2009") & ".doc",len(Me!path))
...
Da verificare in debug mode...
Ciao.
-- 
Sergio MAZZA 

 schrieb im Newsbeitrag 
news:4a5077b1$0$6828$5fc...@news.tiscali.it...

oppss! Scusa.
Ora un�altra cosa, vorrei che premendo un pulsante deve apire il file word 
associato al campo nomefile.
Ho provato a convertire il nomefile in collegamento ipertestuale ma non 
funge.
Come posso fare?
Come sempre molte grazie. 

 Come sempre molte grazie.
Non serve convertire nulla; ti riporto il suggerimento di Namor:
'---
Metti un pulsante a fianco del controllo che contiene il nome del file e
nella propriet� "Testo descrizione controllo" ci scrivi "Apri il file".
Sull'evento Corrente della maschera fai
    Me.Apri.HyperlinkAddress = Me.Percorso & "\" & Me.NomeFile
(sostituisci "Apri" con il nome del tuo pulsante)
Namor
'---
http://groups.google.it/group/it.comp.appl.access/browse_thread/thread/53e88fe24efe072b/a00da048625d57a7?hl=it&lnk=gst&q=apertura+documento+ipertestuale+hyperlink#a00da048625d57a7
Ciao.
-- 
Sergio MAZZA 

 schrieb im Newsbeitrag 
news:4a519f06$0$6832$5fc...@news.tiscali.it...

Ho fatto esattamente come hai detto tu ho scritto il codice direttamente sul 
rigo di fianco a "su corrente" della maschera
ma mi da un errore " Impossibile trovare la macro Me". Ho provato a generare 
il codice in vba sempre "su corrente" in questo caso FUNZIONA per� quando 
cambio record mi da errore :(  "errore runtime 94: Utilizzo non valido di 
Null"
Scusa la mia incapacit� ma non so cosa fare!
Grazie come sempre della collaborazione. 

 Grazie come sempre della collaborazione.
Quando il campo � vuoto (leggi: il file non esiste/non � nella posizione 
indicata) dovrai non eseguire le istruzioni VBA.
Fai un test utilizzando la funzione Dir:
...
if Dir(Me.Percorso & "\" & Me.NomeFile) <> "" Then
    Me!Apri.HyperlinkAddress = Me.Percorso & "\" & Me.NomeFile
Else
    ...che famo?...
End If
