Grazie.....
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
"Sergio MAZZA" <sergi...@tiscali.it> schrieb im Newsbeitrag
news:4a4867bd$0$703$5fc...@news.tiscali.it...
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
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
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.
Grazie
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
Grazie della pazienza.
Ma la maschera da dove esegui il codice � associata alla tabella?
Ciao.
--
Sergio MAZZA
Allora, come ti ho gi� proposto, questo esempio dovrebbe fare quello che
chiedi:
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.
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
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
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
'azzera le variabili oggetto
Set Doc = Nothing
Set Wrd = Nothing
'NB: L'azzeramento degli oggetti Doc e Wrd senza la loro
'preventiva chiusura (Doc.Close e Wrd.Quit)
'fa s� che dopo l'esportazione dei dati
'Word e il documento rimangano aperti
End Sub
"Gioconda ed Emanuele" <g.suc...@arcor.de> schrieb im Newsbeitrag
news:4a47df40$0$30237$9b4e...@newsspool1.arcor-online.net...
Ho imparato qualcosa di nuovo. Ciao e grazie.
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
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"
"Sergio MAZZA" <sergi...@tiscali.it> schrieb im Newsbeitrag
news:4a50581b$1$6840$5fc...@news.tiscali.it...
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
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.
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
Scusa la mia incapacit� ma non so cosa fare!
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