Newsgroup: it.comp.lang.visual-basic
Titolo: Visual Basic e Word

Spero che qualcuno mi possa aiutare,sto sviluppando una applicazione in VB
che apre una istanza del Word e scrive alcuni dati, presi da un form, e li
colloca in una tabella del documento aperto. Dopo la scrittura il documento
viene chiuso e salvato. Fin qui nessun problema, ma se cerco, senza
riavviare l'applicazione, di generare un altro documento mi viene generato
l'errore 462, Perche? Per creare la variabile oggetto del Word uso
"createobject", alla fine della routine chiudo il Word con il metodo quit e
dealloco la variabile impostandola a nothing, ma allora perchè mi da errore?

> Marco Savarese:

Ho provato il codice seguente facendo varie volte clic su
Command1 ma non ho ottenuto l'errore di cui parli. In quale
riga viene generato?
Option Explicit
Private Sub Command1_Click( _
)
  '
  Const c_strDotPathName$ _
    = "C:\Programmi\Microsoft Office\Modelli\prova.dot"
  Const c_strDocPathName$ = "C:\Documenti\Prova.doc"
  '
  Dim wdApp
  Dim wdDoc
  Dim blnDocExists
  '
  Let Command1.Enabled = False
  Call DoEvents
  '
  Set wdApp = CreateObject("Word.Application")
  With wdApp
    With .Documents
      Let blnDocExists = Len(Dir(c_strDocPathName))
      If blnDocExists Then
        Set wdDoc = .Open(c_strDocPathName)
      Else
        Set wdDoc = .Add(c_strDotPathName)
      End If
    End With
    With wdDoc
      With .Tables.Item(1)
        Let .Cell(1, 1).Range.Text = "Pippo"
      End With
      If Not blnDocExists _
      Then _
        Call .SaveAs(c_strDocPathName)
      Call .Close(True)
    End With: Set wdDoc = Nothing
    Call .Quit
  End With: Set wdApp = Nothing
  '
  Let Command1.Enabled = True
  '
End Sub
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

 wrote in message
8m8p9o$q5d$1...@nslave2.tin.it...

Il codice che ho scritto io è il seguente:
Dim doc As Word.Application
Dim contatore As Integer
 Set doc = CreateObject("word.application.8")
  doc.Visible = False
  doc.Documents.Add Template:=App.Path & "\Modelli\certifications.dot"
   doc.ActiveDocument.Tables(1).Columns(2).Cells(1).Select
      --->>  Selection.TypeText (Text1.Text)<<-----
 doc.ActiveDocument.Tables(1).Columns(5).Cells(3).Select
 Selection.TypeText (Mid$(Combo2.Text, 4))
 For contatore = 1 To totale_ins
            valore = codice_cert(contatore)
            doc.ActiveDocument.Tables(2).Columns(3).Cells(valore + 1).Select
            Selection.TypeText (data_emissione(contatore))
            doc.ActiveDocument.Tables(2).Columns(4).Cells(valore + 1).Select
            Selection.TypeText (data_scadenza(contatore))
            doc.ActiveDocument.Tables(2).Columns(5).Cells(valore + 1).Select
            Selection.TypeText (prossima_isp(contatore))
 Next contatore
doc.ActiveDocument.SaveAs FileName:=App.Path & "\Documents\CertList_" &
(Mid$(Combo2.Text, 4)) &".doc"
doc.ActiveDocument.Close
doc.Quit
Set doc = Nothing
La procedura usa una variabile a livello di modulo che totale_ins, la riga
in cui genera un errore quando viene rieseguita senza riavviare il programma
è quella controssagnata da -->> <<--.
Grazie per la risposta e per l'aiuto che mi stai dando.
Ciao da Marco.

       --->>  Selection.TypeText (Text1.Text)<<-----
Qui usi la proprieta` "Selection" dell'oggetto... Di quale
oggetto? Non di "doc": avresti scritto "doc.Selection...".
Ecco, questa e` l'unica cosa che mi viene da dire, mi
dispiace.
[...]
Ho evidenziato un frammento di codice della mia risposta
precedente che potrebbe esserti utile.
