Nei vari forum che ho frequentato mi è capitato spesso di trovarmi a rispondere a questa domanda:

Avrei bisogno di trasferire i dati che si trovano su di un foglio di Excel, in una tabella di Word a prescindere dal numero di righe che la tabella di Excel ha..

Quindi, avendo un foglio di Excel con dei Record, bisogna trasferire questi  Record in una tabella di Word, per poterli stampare o quantomeno salvarli in formato pdf. Per poter effettuare questa operazione e risolvere il problema per prima cosa dobbiamo creare un file Word che contiene una Tabella, formata Esclusivamente da UNA riga e da tante colonne quanto sono le colonne del file di Excel che vogliamo trasferire, dopo aver creato un file di Word  avremmo una situazione del genere:

Rinominiamo il file, nel nostro esempio”ProvaTrasferimentoTabellaWord” e lo salviamo in una dir,in questo esempio che stiamo facendo,sia il file di Excel da dove poi lanceremo il codice che il file di Word che abbiamo salvato , debbono  trovarsi nella stessa Dir, pena il mal funzionamento.

Apriamo il file di Excel che contiene i dati da trasferire,il file avra una struttura come questa:

Una volta creati i file, dobbiamo inserire il codice  che ci permette di trasferire i record dal file di Excel al nostro file di Word.

Per il momento dimentichiamo del file di Word, perché tutto il codice che andremo ad inserire lo inseriremo nel file di Excel.

Apriamo l’Editor di VBA di Excel(Ctrl+F11), inseriamo un Modulo e incolliamo il codice riportato:

 Option Explicit
    Dim Word As Word.Application
    Dim DOC As Word.Document
Public Sub ProvatabellaWord()
    Dim tbl As Table
    Dim s As String
    Dim primaCella As String, cellValue As String
    Dim nomef As String, nomefile As String, nomefileb As String
    Dim sPath As String
    Dim myws As Worksheet
    Dim r As Long, c As Long
    Dim newrow As Object
    Dim v As String
    
    primaCella = "Nome"
    sPath = ThisWorkbook.Path & "\"
    Set myws = ActiveSheet
    Set Word = CreateObject("Word.Application")
    Word.Visible = True
    Set DOC = Word.Documents.Open(sPath & "ProvaTrasferimentoTabellaWord.docx")
    With DOC
        r = 1
        For Each tbl In Word.ActiveDocument.Tables
            s = tbl.Rows(1).Cells(1).Range.Text
            If InStr(1, s, primaCella) Then
                v = myws.Cells(r, 1).Value
                While v <> ""
                    If v = primaCella Then
                        r = r + 1
                        c = 1
                        Do While myws.Cells(r, c).Text <> ""
                            tbl.Rows.Add
                            Set newrow = tbl.Rows(tbl.Rows.Count)
                            Do While myws.Cells(r, c).Text <> ""
                                cellValue = myws.Cells(r, c).Text
                                newrow.Cells(c).Range.Text = cellValue
                                With newrow.Range.Font
                                    .Italic = True
                                    .Bold = False
                                    .Name = "Arial"
                                    .Size = 12

                                End With
                                c = c + 1
                            Loop
                            r = r + 1
                            c = 1
                        Loop
                    End If
                    r = r + 1
                    v = myws.Cells(r, 1).Value
                Wend
            End If
            nomefile = tbl.Rows(2).Cells(1).Range.Text
            nomefileb = Len(nomefile)
            '            nomef = Left(nomefile, (nomefileb - 2))
        Next tbl
        nomef = InputBox("inserisci il nome ", 1)
        If (nomef = "" And vbOK) Then
            nomef = Left(nomefile, (nomefileb - 2))
        End If
        If Dir(sPath & nomef & ".docx") <> "" Then
            Kill (sPath & nomef & ".docx")
        End If
        .SaveAs (sPath & nomef & ".docx")
        .Close
    End With
    Word.Quit
    Set DOC = Nothing
    Set Word = Nothing
End Sub

Lanciando la macro con il tasto F5, viene fuori questo errore. Questo errore viene fuori perché non abbiamo messo il riferimento alla libreria di Word.

Andiamo nel menu Strumenti dell’editor di VBA è mettiamo la spunta “Microsoft Word…” la versione dipende dalla versione di Excel, vedi Figura :

Una volta settato il Riferimento alla libreria, lanciamo la nostra macro, che aprirà il documento di Word è compilerà la tabella con i dati prelevati dal nostro file di Excel
ExcelChiamaWord1

Trasferire dati da foglio Excel in una tabella di Word

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.