Come inserire la tabella Excel in Word con VBA
Microsoft Office Microsoft Word Microsoft Microsoft Excel Eroe Parola / / April 29, 2020
Ultimo aggiornamento il
VBA è uno strumento molto potente che puoi utilizzare per automatizzare molto lavoro tra più applicazioni di Microsoft Office. Un'attività comune che è possibile automatizzare tramite VBA è l'inserimento di una tabella Excel in un documento di Word.
Visual Basic, Applications Edition (VBA) è uno strumento molto potente che è possibile utilizzare per automatizzare molto lavoro tra più applicazioni di Microsoft Office. Un'attività comune che è possibile automatizzare tramite VBA è l'inserimento di una tabella Excel in un documento di Word.
Ci sono due modi per farlo. Il primo è automatizzare una copia e incolla diretta di un intervallo esistente da Excel in una nuova tabella in un documento di Word. Il secondo sta eseguendo calcoli in Excel, creando una nuova tabella in Word e scrivendo i risultati nella tabella.
Potresti provare a farlo registra una macro per fare ciò, ma le macro ti permetteranno solo di automatizzare le attività all'interno di Word. In questo articolo, imparerai come scrivere il codice VBA per automatizzare queste azioni tra Excel e Word.
Copia e incolla un intervallo di Excel in Word con VBA
In entrambi gli esempi, inizieremo con un foglio di calcolo Excel di esempio. Questo esempio è un elenco di ordini di acquisto per una varietà di prodotti.
Supponiamo che desideri copiare e incollare l'intero intervallo di celle in questo foglio di lavoro in un documento di Word. Per fare ciò, dovrai scrivere una funzione VBA che verrà eseguita quando fai clic sul pulsante "Copia in Word".
Selezionare Sviluppatore dal menu e selezionare Inserire dal gruppo Controlli nella barra multifunzione. Nell'elenco a discesa, selezionare il controllo Button in Controlli ActiveX.
Quindi, disegna il pulsante di comando sul lato destro del foglio. È possibile modificare la didascalia in "Copia in Word" facendo clic con il pulsante destro del mouse sul pulsante e selezionando Proprietà. Cambia il testo della didascalia e puoi usare Font per aggiornare la dimensione e lo stile del font.
Nota: Se non vedi Sviluppatore nel menu di Excel, quindi aggiungilo. Selezionare File, Opzioni, Personalizza il nastroe selezionare Tutti i comandi dal menu a discesa a sinistra. Quindi muoviti Sviluppatore dal riquadro sinistro a destra e selezionare OK per terminare.
Scrivi il codice VBA Copia e incolla
Ora sei pronto per iniziare a scrivere il codice VBA. Per iniziare, fai doppio clic sul nuovo Copia in Word per aprire la finestra dell'editor del codice.
Dovresti vedere una subroutine chiamata Commandbutton1_Click () come mostrato di seguito.
Ti consigliamo di copiare ogni sezione di codice qui sotto. Prima di iniziare a scrivere codice, per controllare Word sul tuo computer tramite VBA, devi abilitare la libreria di riferimento di Microsoft Word.
Nell'editor di codice, selezionare Utensili dal menu e selezionare Riferimenti. Nell'elenco dei riferimenti disponibili, scorrere verso il basso e abilitare Libreria oggetti di Microsoft Word 16.0.
Seleziona OK e sei pronto per iniziare a scrivere codice. Esamineremo ogni sezione del codice alla volta in modo da capire cosa fa quel codice e perché.
Innanzitutto, devi creare le variabili e gli oggetti che terranno l'intervallo e ti consentiranno di controllare l'applicazione Word.
Dim tblRange As Excel. Gamma
Dim WordApp come Word. Applicazione
Dim WordDoc come Word. Documento
Dim WordTable As Word. tavolo
La riga di codice successiva seleziona un intervallo specifico di celle e lo salva in un oggetto Intervallo Excel in VBA.
Set tblRange = ThisWorkbook. Fogli di lavoro ( "Sheet1") Gamma. ( "A2: G44")
Successivamente, si desidera verificare se l'applicazione Word è già aperta sul computer. È possibile fare riferimento all'applicazione Word utilizzando uno speciale riferimento "class" con il comando VBA GetObject per eseguire ciò. Se Word non è già aperto, la riga successiva lo avvierà utilizzando la funzione CreateObject. La riga "On Error Resume Next" impedisce a qualsiasi errore della prima funzione GetObject (se Word non è già aperto) di interrompere l'esecuzione della riga successiva nel programma.
In caso di errore Riprendi Successivo
Imposta WordApp = GetObject (class: = "Word. Applicazione")
Se WordApp non è niente, imposta WordApp = CreateObject (class: = "Word. Applicazione")
Ora che l'applicazione Word è stata lanciata, vuoi renderla visibile all'utente e attivarla per l'uso.
WordApp. Visibile = Vero
WordApp. Attivare
Successivamente, si desidera creare un nuovo documento all'interno dell'applicazione Word.
Imposta WordDoc = WordApp. Documenti. Inserisci
Infine, dovrai copiare e incollare l'intervallo di celle in una nuova tabella nel documento di Word.
tblRange. copia
WordDoc. Paragrafi (1) .Gamma. PasteExcelTable _
LinkedToExcel: = False, _
WordFormatting: = False, _
RTF: = False
Gli interruttori nella funzione sopra inseriranno una tabella non collegata usando la formattazione Excel di origine (non la formattazione di Word) e non usando il formato RTF.
Infine, per gestire intervalli di Excel più ampi del documento, dovrai adattare automaticamente la nuova tabella in modo che si adatti ai margini del tuo nuovo documento di Word.
Imposta WordTable = WordDoc. Tavoli (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
E ora hai finito! Salvare il file come file Excel abilitato per le macro (estensione .xlsm). Chiudi l'editor, salva di nuovo il file Excel originale, quindi fai clic sul pulsante di comando per vedere il codice in azione!
Scrivi i risultati di Excel in una tabella di parole con VBA
In questa sezione successiva, scriverai il codice VBA che esegue calcoli sui valori in Excel e li scrive in una tabella in Word.
Per questo esempio, estrarremo 10 righe di dati, calcoleremo e scriveremo i risultati in una tabella in un documento di Word. Inoltre, la tabella originale conterrà quattro colonne e il codice VBA estrarrà le prime dieci righe di dati da quell'intervallo.
Proprio come nell'ultima sezione, esamineremo ogni sezione alla volta in modo da capire cosa fa quel codice e perché.
Innanzitutto, crea le variabili e gli oggetti che contengono i dati e ti consente di scrivere nell'applicazione Word.
Dim tblRange As Excel. Gamma
Dim WrdRange As Word. Gamma
Dim WordApp come Word. Applicazione
Dim WordDoc come Word. Documento
Dim WordTable As Word. tavolo
Dim intRows
Dim intColumns
Dim strDate As String
Dim strItem As String
Dim intUnits As Variant
Dim intCost as Variant
Dim intototale come variante
Quindi, imposta le colonne e le righe totali che desideri leggere dall'intervallo di Excel.
intNoOfRows = 10
intNoOfColumns = 5
Ripeti lo stesso codice dell'ultima sezione che aprirà Word se non è già aperto.
In caso di errore Riprendi Successivo
Imposta WordApp = GetObject (class: = "Word. Applicazione")
Se WordApp non è niente, imposta WordApp = CreateObject (class: = "Word. Applicazione")
WordApp. Visibile = Vero
WordApp. Attivare
Imposta WordDoc = WordApp. Documenti. Inserisci
Le successive quattro righe creano una tabella all'interno del documento Word appena aperto.
Set WrdRange = WordDoc. Intervallo (0, 0)
WordDoc. Tabelle. Aggiungi WrdRange, intNoOfRows, intNoOfColumns
Imposta WordTable = WordDoc. Tavoli (1)
WordTable. Frontiere. Abilita = Vero
Infine, il ciclo seguente eseguirà queste azioni:
- Per ogni riga, inserisci la data dell'ordine, l'articolo, le unità e il costo in variabili
- Calcola il costo unitario (vendita totale) e memorizzalo in una variabile
- Per ogni colonna, scrivi i valori nella tabella di Word, inclusa la vendita totale calcolata nell'ultima cella
- Passa alla riga successiva e ripeti la procedura sopra
Ecco come appare quel codice:
Per i = 1 a intNoOfRows
Per j = 1 a intNoOfColumns
Se j = 1 Allora
strDate = tblRange. Celle (i + 1, j) .Valore
strItem = tblRange. Celle (i + 1, j + 1) .Valore
intUnits = Val (tblRange. Celle (i + 1, j + 2) .Valore)
intCost = Val (tblRange. Celle (i + 1, j + 3) .Valore)
intTotal = intUnits * intCost
Finisci se
Seleziona il caso j
Il caso è = 1
WordTable. Cella (i, j) .Range. Text = strDate
Il caso è = 2
WordTable. Cella (i, j) .Range. Text = strItem
Il caso è = 3
WordTable. Cella (i, j) .Range. Testo = intUnits
Il caso è = 4
WordTable. Cella (i, j) .Range. Testo = intCost
Il caso è = 5
WordTable. Cella (i, j) .Range. Testo = intTotal
Caso altrimenti
Fine selezione
Il prossimo
Il prossimo
La funzione "Celle" nella prima parte estrae il valori di cella fuori da Excel. Le celle (x, y) indicano che estrae il valore della cella nella riga xe nella colonna y.
La funzione "Cella" nell'ultima parte scrive nelle celle della tabella di Word, usando le stesse assegnazioni di riga e colonna.
Una volta salvato ed eseguito questo codice VBA, vedrai i risultati nel tuo documento Word appena creato.
Come puoi vedere, non è troppo complicato creare qualche utile automazione tra Excel e Word. È solo una questione di capire come funzionano i vari "oggetti" che possono creare e controllare le applicazioni Excel e Word sul tuo computer.