Newsgroup: it.comp.lang.visual-basic
Titolo: HELP office AUTOMATION- Word da dati eXcel-

Ciao,
ho un problema: ho un foglio di Excel con una serie di caselle dove vi sono
delle descrizioni di determinati articoli, tipo:
A                  B
articolo    cappello
colore      rosso
tipo         sportivo
e devo create un foglio di word secondo uno schema prefissato dove vanno
inseriti tali dati, per esempio:
"L'articolo che proponiamo oggi è il CAPPELLO. La nostra nuova linea lo
propone in un colore ROSSO che gli conferisce un carattere SPORTIVO.
La macro presentata sul sito di MICROSOFT che compila una bola di
accompagnamento (che allego ) fa     qualcosa di simile, apre WORD (che però
deve essere chiuso prima di avviare la macro) sostituisce in corrispondenza
di un bookmark l'indirizzo del destinatario e copia alcune celle)
Ho provato a modificare tale macro per i miei scopi  ma non ci sono
riuscito.
In particolare mi servirebbe che la macro:
1 apra un documento modello da word (WORD è perennemente aperto sul mio pc,
la macro di M$ non fuinge se W è gia aperto!)
2. sostituisca in corrispondenza di determinati bookmark il contenuto delle
celle excel come nell'esempio
3 stampi il documento
4. salvi con nome il documento in una directory predefinita
5. chiuda il documento modello senza salvarlo di modo che possa essere
riutilizzato
grazie
Carlo
Dim MioWord As Word.Application, DocNota As Word.Document, PrimoAvvioWord As
Boolean
Private Sub CommandButton1_Click()
  Dim Percorso As String, Indirizzo As String
  Dim CltScelto As Integer, Cella As Range
  CltScelto = Range("Num_ClienteScelto")
  For Each Cella In Foglio2.Range("Indirizzi").Rows(CltScelto).Cells
    Indirizzo = Indirizzo & Cella & vbLf
  Next
  'MsgBox Indirizzo
  Percorso = Me.Parent.Path 'Percorso di questo modello .XLS
  'e del documento Word "Nota Addebito.doc"
  On Error Resume Next
  Set MioWord = GetObject(, "Word.Application")
  If Err.Number = 429 Then
    Err.Number = 0
    Set MioWord = CreateObject("Word.Application")
    If Err.Number = 429 Then
      MsgBox "Word non è presente su questo PC!", vbExclamation, "Errore"
      Exit Sub
    End If
    PrimoAvvioWord = True
  End If
  With MioWord
    If PrimoAvvioWord Then
      .Visible = True
      .Documents.Open Filename:=Percorso & "\Nota Addebito.doc"
      Set DocNota = .ActiveDocument
      PrimoAvvioWord = False
    End If
    With DocNota
      'Cancellazione indirizzo precedente
      .Range(.Bookmarks("InizioIndirizzo").End, _
      .Bookmarks("FineIndirizzo").Start - 1).Delete
      .Bookmarks("InizioIndirizzo").Range.Text = Indirizzo
      'Cancellazione tabella precedente
      If .Tables.Count <> 0 Then .Tables(1).Delete
      'Variante troppa-grazia, elimina tutte le tabelle:
      'For Each Tab in .Tables : Tab.delete : Next Tb
    End With
  End With
  Range("NotaAddebito").Copy
  DocNota.Bookmarks("TabellaAddebiti").Range.Paste
  Application.CutCopyMode = False 'Elimina casella ruotante attorno
  'alla tabella "NotaAddebito" (Application, qui, è Excel!)
  Tasks("Microsoft Word").Activate 'Attenzione! la domanda
  'che segue NON viene eseguita: è "sospesa" e riprende con la
  'riattivazione del task EXCEL
  Dimmi = MsgBox("Fine lavoro?", vbYesNo)
  If Dimmi = vbYes Then Application.Quit 'Chiusura di Excel
End Sub

> Carlo Clerici:

[...]
Butta via tutto e reimposta cosi`:
1. Excel. Metti i dati in forma tabellare:
Articolo Colore Tipo
Cappello Rosso  Sportivo
<..>     <..>   <..>
2. Word. Usa "Stampa unione".
3. Quando tutto funziona possiamo riparlare di macro.
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

3. Quando tutto funziona possiamo riparlare di macro.
Grazie!
Scusa per il ritardo con il quale ti rispondo...
In effetti non avevo pensato a percorrere questa strada...
Ora perň rimane il resto della "macro".
 Rimane comunque un problema: vedo che i campi del mailmerge sono su sfondo
"grigetto", per motivi estetici (non č proprio cosě perň....) vorrei che
tali campi non si vedessero... voeeri cioč fare una sorta di "incolla
valori" in Word.. come posso fare?
Mi puoi dare una mano con il resto della macro?
Ciao
Grazie carlo

 Mi puoi dare una mano con il resto della macro?
Ok. Cosa deve fare 'sta macro?
