Un amico si è trovato con molti file Word contenenti numerose tabelle che andavano copiate e incollate in un file Excel. Per non impazzire… ha chiesto il mio aiuto e così è nato un video che qui commento.
Vediamo insieme come risolvere il problema su un file Word contenente 3 tabelle. Scriveremo una breve macro VBA.
Procedimento
0) apro il file contenente le tabelle
1) in Word premo ALT+F11. Questa combinazione ci porta nella finestra del Visual Basic Editor dove posso scrivere la macro
2) Creo un riferimento a Excel: Strumenti – Riferimenti e poi spunto Microsoft Excel 15.0 Object Library (15 se ho Excel 2013, 14 se ho il 2010, 12 se ho il 2007)
3) Tasto destro a sinistra su Normal nella finestra del progetto e poi clic su Inserisci-Modulo. In tal modo la macro sarà memorizzata nel modello Normal.
4) Nel foglio bianco che si apre creo la mia routine scrivendo:
Sub sCopiaTabellaSuExcel() End Sub
In mezzo a queste due righe scriveremo il nostro codice:
Dim oXL As Excel.Application Dim wkb As Excel.Workbook Dim wks As Excel.Worksheet Dim tbl As Table
' apro excel Set oXL = New Excel.Application ' rendo visibile l'applicazione oXL.Visible = True
' creo una cartella di lavoro Set wkb = oXL.Workbooks.Add
' per ogni tabella in word For Each tbl In ActiveDocument.Tables ' seleziono la tabella tbl.Select ' copio Selection.Copy ' creo un foglio di lavoro in excel Set wks = wkb.Worksheets.Add ' incollo in A1 il contenuto della tabella wks.Range("A1").PasteSpecial xlPasteValues ' passo alla eventuale successiva tabella word Next
Ora, per eseguire il codice è sufficiente che il cursore sia in mezzo alla nostra procedura e poi premere il tasto F8: le istruzioni saranno eseguite una alla volta. Oppure F5 e tutto sarà eseguito automaticamente. In pochi secondi le nostre 3 tabelle saranno copiate ciascuna in un foglio di lavoro di Excel. Naturalmente, modificando il codice opportunamente, potremmo dire a Word: vai nella cartella “Dati”, apri uno per volta tutti i file Word e copia le tabelle in Excel. Inoltre, le tabelle potrebbero anche essere incollate nello stesso foglio di lavoro e non in fogli di lavoro diversi, come abbiamo visto in questa macro. Insomma, l’importante è cominciare a capire che copia e incolla non è sempre l’unica soluzione! E poi si può sempre e solo migliorare…