Article View: free.it.visual-basic
Article #2140Re: Inesperto chiede....
From: stgfv
Date: Wed, 15 Oct 2003 22:01
Date: Wed, 15 Oct 2003 22:01
91 lines
4866 bytes
4866 bytes
Grazie della dritta ma ho trovato questa soluzione tra tutte molto
interessante cio� passare a dei campi %%nome%% in word delle variabili dei
form attraverso Vb.
Il problema sorge con il fatto che non conosco gli object e nemmeno
GetObject (e purtroppo non ho neanche una guida di Vb!).
Considerato il fatto che i riferimenti di word sono incompatibili se fatti
con versioni differenti, vorrei che fosse possibile sostituitre i dati
indipendentemente dalla versione di Word, quindi far diventare xWord un
object.
Mi manca la sostituzione dei dati %%nome%% nelle tabelle di word!
Ho provato tutta la sera e niente!
Listato del codice e il seguente:
Dim xWord As Object
Dim xRange As Range ' Oggetto Range
Dim xSelection As Find ' Oggetto Find
Dim xTabella As Table ' Oggetto Tabella
Dim xCella As Cell ' Oggetto Cella
'istanzio una nuovo oggetto Word.Application
Set xWord = CreateObject("Word.Application")
If Err.Number <> 0 Then
'c'� stato qualche errore nell'aprire l'istanza Word
'Solitamente l'errore �: n.429 Can't create activex component
MsgBox ("Word non c'�?")
End If
'Rendo invisibile l'instanza
xWord.Visible = False
'Se fosse visibile, potrei massimizzare la finestra con
'la seguente riga di codice
'xWord.WindowState = wdWindowStateMaximize
'aggiungo un documento (in questo caso un modello)
xWord.Documents.Add App.Path & "\Parcella.doc"
'imposto i vari dati (qui naturalmente sostituirai i dati con quelli
'presi da un DB. I campi contrassegnati con %%<nome campo>%% sono
corrispondenti
'a quelli inseriti nel documento (o modello) word.
Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%nome%%", , , , , , , , , Stampa.Nome, True
Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%cognome%%", , , , , , , , , Stampa.Indirizzo,
True
Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%Albo%%", , , , , , , , , Stampa.Albo, True
Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%int%%", , , , , , , , , Form1.int, True
Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%Signor%%", , , , , , , , , Form1.Signor, True
Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%recapito%%", , , , , , , , , Form1.Indirizzo,
True
Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%citta%%", , , , , , , , , Form1.citt�, True
"KillerBoy" <@nospam@@pippo.it> ha scritto nel messaggio
news:358jb.36973$vO5.1379953@twister1.libero.it...
> "stgfv" <stgfv@NOSPAM-tiscali.it> ha scritto nel messaggio
> news:o4%ib.216840$hE5.7311795@news1.tin.it...
> > Forse sono stato poco chiaro,
> > ho implementato attraverso il codice :
> [CUT]
>
> Ora credo di aver capito.
>
> > Dim WrdApp As Word.Application 'Se Word sul Pc non c'� mi manda in crash
> > l'applicazione!!!!!!!!!!
>
> ti manda in crash l'applicazione perch� non la definisci come "new" quindi
> cerca word gi� istanziato
> potresti definire wrdapp come object (conseguentemente anche wrddoc e
campo)
> e poi usare la GetObject, con i parametri appropriati, in modo tale che se
> non c'� word viene istanzianziato (ed oltretutto se non lo metti tra i
> riferimenti il codice diventa conpatibile con le varie versioni di word)
>
> > 'Vorrei ora proteggere il file aperto con una password!!
> > 'Come farlo?
>
> la password, se non ricordo male puoi impostarla al momento del
salvataggio
> del documento, tra i vari parametri gli puoi anche dare le password per
> accedere al file
>
Technical Details
Message-ID:
<1tjjb.221829$hE5.7469284@news1.tin.it>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!nntp.infostrada.it!newsfeeder.edisontel.com!news-out.tin.it!news-in.tin.it!news1.tin.it.POSTED!not-for-mailReferences:
<ZwBib.277259$R32.9038809@news2.tin.it> <sUOib.36322$e6.1287211@twister2.libero.it> <o4%ib.216840$hE5.7311795@news1.tin.it> <358jb.36973$vO5.1379953@twister1.libero.it>Show Full Headers
Complete Article Headers
X-Google-Language: ITALIAN,ASCII X-Google-Thread: f94ee,3c3673a7b24ed666 X-Google-Attributes: gidf94ee,public X-Google-ArrivalTime: 2003-10-15 15:01:33 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!nntp.infostrada.it!newsfeeder.edisontel.com!news-out.tin.it!news-in.tin.it!news1.tin.it.POSTED!not-for-mail From: "stgfv" <stgfv@NOSPAM-tiscali.it> Newsgroups: free.it.visual-basic References: <ZwBib.277259$R32.9038809@news2.tin.it> <sUOib.36322$e6.1287211@twister2.libero.it> <o4%ib.216840$hE5.7311795@news1.tin.it> <358jb.36973$vO5.1379953@twister1.libero.it> Subject: Re: Inesperto chiede.... Lines: 93 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1158 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Message-ID: <1tjjb.221829$hE5.7469284@news1.tin.it> Date: Wed, 15 Oct 2003 22:01:33 GMT NNTP-Posting-Host: 80.181.84.65 X-Complaints-To: newsmaster@tin.it X-Trace: news1.tin.it 1066255293 80.181.84.65 (Thu, 16 Oct 2003 00:01:33 MET DST) NNTP-Posting-Date: Thu, 16 Oct 2003 00:01:33 MET DST Organization: TIN