none
Excel 2007-Una macro che mette dei valori in Word 2007 RRS feed

  • 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.

    venerdì 16 dicembre 2011 16:04

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 Sub

    RigaErrore:
        MsgBox Err.Number & vbNewLine & Err.Description
        Resume RigaChiusura

    End 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
    sabato 17 dicembre 2011 10:23

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 Sub

    RigaErrore:
        MsgBox Err.Number & vbNewLine & Err.Description
        Resume RigaChiusura

    End 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
    sabato 17 dicembre 2011 10:23
  • 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

     

    lunedì 19 dicembre 2011 09:45
  • 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/
    lunedì 19 dicembre 2011 11:31
  • 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.

    venerdì 2 maggio 2014 10:58
  • 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à MSDN

    Vi 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.

    mercoledì 7 maggio 2014 09:37