Principale utente con più risposte
Excel 2007-Una macro che mette dei valori in Word 2007

Domanda
-
Avrei questo bellissimo lavoretto da fare :
classico elenco clienti in Excel con i dati anagrafici, dovrei per ogni riga , fare un bel ciclo e :
- Aprire Word , inserire il valore codice cliente ; ad un punto della lettera di Word, poi ragione sociale, indirizzo, località, pv ecc
Quindi fondamentalmente una stampa unione, ma : il codice Vb, dovrà salvare "n" word per quanti sono i clienti presenti in excel .
In sostanza : ciclo tra le righe di excel, per ogi riga, apro word, incollo i valori alle posizioni previste, salvo word con un nome variabile (ragione sociale cliente).
Ma la domanda è : cosa fareste in questo caso ? Delle caselle di testo in word da valorizzare con i dati di excel non so se si possono creare, come faccio a dirgli: la ragione sociale mettimela in questo punto, la località in questo ?
Nessuno ha mai avuto questa esigenza?
Grazie mille a tutti.
Risposte
-
Avrei questo bellissimo lavoretto da fare :
classico elenco clienti in Excel con i dati anagrafici, dovrei per ogni riga , fare un bel ciclo e :
- Aprire Word , inserire il valore codice cliente ; ad un punto della lettera di Word, poi ragione sociale, indirizzo, località, pv ecc
Quindi fondamentalmente una stampa unione, ma : il codice Vb, dovrà salvare "n" word per quanti sono i clienti presenti in excel .
In sostanza : ciclo tra le righe di excel, per ogi riga, apro word, incollo i valori alle posizioni previste, salvo word con un nome variabile (ragione sociale cliente).
Ma la domanda è : cosa fareste in questo caso ? Delle caselle di testo in word da valorizzare con i dati di excel non so se si possono creare, come faccio a dirgli: la ragione sociale mettimela in questo punto, la località in questo ?
Nessuno ha mai avuto questa esigenza?
Grazie mille a tutti.
Utilizzi segnalibri di Word.Questo codice, ad esempio, inserito in un modulo standard di Excel, legge la colonna A2:A(n), apre il file di Word, inserisce il valore della clonna A nel segnalibro Uno e il valore della colonna B nel segnalibro Due, salva il file di Word con il nome corrispondente al valore della colonna A, lo chiude e ricomincia:
Public Sub m()
On Error GoTo RigaErrore
Dim objWord As Object
Dim objDoc As Object
Dim sPath As String
Dim sNomeFile As String
Dim sh As Worksheet
Dim lRiga As Long
Dim lng As Long
Set sh = ThisWorkbook.Worksheets("Foglio1")
sPath = "C:\Prova\"
sNomeFile = "mioDoc.docx"
With sh
lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
Set objWord = CreateObject("Word.Application")
For lng = 2 To lRiga
If Dir(sPath) <> "" Then
Set objDoc = objWord.Documents.Open(sPath & sNomeFile)
objDoc.Bookmarks("Uno").Range.Text = .Range("A" & lng).Value
objDoc.Bookmarks("Due").Range.Text = .Range("B" & lng).Value
objDoc.SaveAs (sPath & .Range("A" & lng).Value & ".docx")
'objWord.Visible = True
objDoc.Close
Set objDoc = Nothing
End If
Next
End With
RigaChiusura:
If Not objWord Is Nothing Then
objWord.Quit
Set objWord = Nothing
End If
Exit SubRigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusuraEnd Sub
NOTE. La cartella di destinazione in questo esempio è la stessa del file base. Modifica per ciò che riguarda Word i nomi del file base, la sua path e la path della cartella dove vuoi salvare e i nomi dei segnalibri con i tuoi. Per Excel modifica il nome del foglio e dellle colonne con i tuoi. Banale aggiungere altri segnalibri. Segnalibri per i quali, se non li hai mai utilizzati, la guida di Word è esaustiva.
Mauro Gamberini - Microsoft© MVP(Excel)
http://www.maurogsc.eu/
- Modificato Mauro Gamberini sabato 17 dicembre 2011 10:31
- Proposto come risposta Irina Turcu mercoledì 21 dicembre 2011 11:53
- Contrassegnato come risposta Irina Turcu mercoledì 28 dicembre 2011 11:03
Tutte le risposte
-
Avrei questo bellissimo lavoretto da fare :
classico elenco clienti in Excel con i dati anagrafici, dovrei per ogni riga , fare un bel ciclo e :
- Aprire Word , inserire il valore codice cliente ; ad un punto della lettera di Word, poi ragione sociale, indirizzo, località, pv ecc
Quindi fondamentalmente una stampa unione, ma : il codice Vb, dovrà salvare "n" word per quanti sono i clienti presenti in excel .
In sostanza : ciclo tra le righe di excel, per ogi riga, apro word, incollo i valori alle posizioni previste, salvo word con un nome variabile (ragione sociale cliente).
Ma la domanda è : cosa fareste in questo caso ? Delle caselle di testo in word da valorizzare con i dati di excel non so se si possono creare, come faccio a dirgli: la ragione sociale mettimela in questo punto, la località in questo ?
Nessuno ha mai avuto questa esigenza?
Grazie mille a tutti.
Utilizzi segnalibri di Word.Questo codice, ad esempio, inserito in un modulo standard di Excel, legge la colonna A2:A(n), apre il file di Word, inserisce il valore della clonna A nel segnalibro Uno e il valore della colonna B nel segnalibro Due, salva il file di Word con il nome corrispondente al valore della colonna A, lo chiude e ricomincia:
Public Sub m()
On Error GoTo RigaErrore
Dim objWord As Object
Dim objDoc As Object
Dim sPath As String
Dim sNomeFile As String
Dim sh As Worksheet
Dim lRiga As Long
Dim lng As Long
Set sh = ThisWorkbook.Worksheets("Foglio1")
sPath = "C:\Prova\"
sNomeFile = "mioDoc.docx"
With sh
lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
Set objWord = CreateObject("Word.Application")
For lng = 2 To lRiga
If Dir(sPath) <> "" Then
Set objDoc = objWord.Documents.Open(sPath & sNomeFile)
objDoc.Bookmarks("Uno").Range.Text = .Range("A" & lng).Value
objDoc.Bookmarks("Due").Range.Text = .Range("B" & lng).Value
objDoc.SaveAs (sPath & .Range("A" & lng).Value & ".docx")
'objWord.Visible = True
objDoc.Close
Set objDoc = Nothing
End If
Next
End With
RigaChiusura:
If Not objWord Is Nothing Then
objWord.Quit
Set objWord = Nothing
End If
Exit SubRigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusuraEnd Sub
NOTE. La cartella di destinazione in questo esempio è la stessa del file base. Modifica per ciò che riguarda Word i nomi del file base, la sua path e la path della cartella dove vuoi salvare e i nomi dei segnalibri con i tuoi. Per Excel modifica il nome del foglio e dellle colonne con i tuoi. Banale aggiungere altri segnalibri. Segnalibri per i quali, se non li hai mai utilizzati, la guida di Word è esaustiva.
Mauro Gamberini - Microsoft© MVP(Excel)
http://www.maurogsc.eu/
- Modificato Mauro Gamberini sabato 17 dicembre 2011 10:31
- Proposto come risposta Irina Turcu mercoledì 21 dicembre 2011 11:53
- Contrassegnato come risposta Irina Turcu mercoledì 28 dicembre 2011 11:03
-
-
Signor Gamberini,
sempre grande come al solito.
E' perfetto, io pensavo di usare in qualche modo la stampa unione ma con i segnalibri è ottimo e facilissimo.
Grazie mille.
Buon Natale
Prima o poi lo penserò davvero di essere *grande*... ;-)Grazie per il cortese riscontro, buon lavoro e buone feste anche a te.
Mauro Gamberini - Microsoft© MVP(Excel)
http://www.maurogsc.eu/ -
Buongiorno,
vorrei sapere come posso modificare questa stringa di codice:
"objDoc.Bookmarks("Uno").Range.Text = .Range("A" & lng).Value"
per deselezionare o selezionare una casella di controllo che è situata nello stesso foglio di word che ha come segnalibro "Controllo1".
Grazie in anticipo.
-
Buongiorno,
vorrei sapere come posso modificare questa stringa di codice:
"objDoc.Bookmarks("Uno").Range.Text = .Range("A" & lng).Value"
per deselezionare o selezionare una casella di controllo che è situata nello stesso foglio di word che ha come segnalibro "Controllo1".
Grazie in anticipo.
Ciao seby1991,
Visto che il thread corrente è già stato chiuso qualche tempo fa, ti consiglio di aprire un nuovo thread per poter trovare una risposta alla tua domanda.
Poi, questo forum è dedicato piuttosto alle domande sulla migrazione a VB.NET. Puoi postare invece il tuo quesito su uno dei forum Office di Microsoft Community:
I forum Microsoft Community dedicati a Microsoft Office
Grazie per la comprensione,
<QUESTO CONTENUTO È DISTRIBUITO "AS IS", ESCLUDENDO OGNI FORMA DI RESPONSABILITÀ DI QUALUNQUE GENERE, ESPLICITA O IMPLICITA>
Grazie
Il Supporto delle Comunità MSDNVi preghiamo di ricordare a “Segnare come Risposta” i post che risolvono il vostro problema. Questa è di solito una modalità di riconoscimento verso chi vi ha aiutati, facilitando per il futuro la scoperta della risoluzione per gli altri visitatori.