Cum să inserați tabelul Excel în cuvânt cu VBA
Microsoft Office Microsoft Word Microsoft Microsoft Excel Erou Cuvânt / / April 29, 2020
Ultima actualizare la
VBA este un instrument foarte puternic pe care îl puteți utiliza pentru a automatiza foarte multă muncă între mai multe aplicații Microsoft Office. Una dintre activitățile obișnuite pe care le poți automatiza folosind VBA este inserarea unui tabel Excel într-un document Word.
Visual Basic pentru aplicații (VBA) este un instrument foarte puternic pe care îl puteți utiliza pentru a automatiza o mulțime de lucrări între mai multe aplicații Microsoft Office. Una dintre activitățile obișnuite pe care le poți automatiza folosind VBA este inserarea unui tabel Excel într-un document Word.
Există două moduri în care poți face acest lucru. Primul este automatizarea unei copii și a lipirii drepte a unui interval existent de la Excel într-un nou tabel într-un document Word. Al doilea este efectuarea calculelor în Excel, crearea unui nou tabel în Word și scrierea rezultatelor în tabel.
Ai putea încerca înregistrați o macrocomandă pentru a face acest lucru, dar macro-urile vă vor permite să automatizați doar sarcinile din interiorul Word. În acest articol, veți învăța cum să scrieți cod VBA pentru a automatiza aceste acțiuni între Excel și Word.
Copiați și lipiți un interval Excel în Word cu VBA
În ambele exemple, vom începe cu un exemplu de foaie de calcul Excel. Acest eșantion este o listă de comenzi de cumpărare pentru o varietate de produse.
Să presupunem că doriți să copiați și să inserați întreaga gamă de celule din această foaie de lucru într-un document Word. Pentru a face acest lucru, va trebui să scrieți o funcție VBA care va fi rulată atunci când faceți clic pe butonul „Copiere în cuvânt”.
Selectați Dezvoltator din meniu și selectați Introduce din grupul Controls din panglică. În lista derulantă, selectați Control buton sub Control ActiveX.
Apoi, desenați butonul de comandă din partea dreaptă a foii. Puteți schimba subtitrarea în „Copiere în Word” făcând clic dreapta pe buton și selectând Proprietăți. Modificați textul de legendă și puteți utiliza Font pentru a actualiza dimensiunea și stilul fontului.
Notă: Dacă nu vezi Dezvoltator în meniul dvs. Excel, apoi adăugați-l. Selectați Fişier, Opțiuni, Personalizați Panglicăși selectați Toate comenzile din stânga în jos. Apoi mutați-vă Dezvoltator din panoul din stânga spre dreapta și selectați OK pentru a termina.
Scrieți codul VBA Copiați și lipiți
Acum sunteți gata să începeți să scrieți codul VBA. Pentru a începe, faceți dublu clic pe nou Copiați pe Word buton pentru a deschide fereastra editorului de coduri.
Ar trebui să vedeți o subrutină numită Commandbutton1_Click () după cum se arată mai jos.
Veți dori să copiați fiecare secțiune de cod de mai jos. Înainte de a începe codarea, pentru a controla Word pe computerul dvs. folosind VBA, va trebui să activați la biblioteca de referință Microsoft Word.
În editorul de coduri, selectați Unelte din meniu și selectați Referințe. În lista de referințe disponibile, derulați în jos și activați Biblioteca de obiect Microsoft Word 16.0.
Selectați OK și sunteți gata să începeți codificarea. Vom parcurge fiecare secțiune de cod simultan, astfel încât să înțelegeți ce face codul respectiv și de ce.
În primul rând, trebuie să creați variabilele și obiectele care vor păstra intervalul și vă vor permite să controlați aplicația Word.
Dim tblRange Ca Excel. Gamă
Dim WordApp Ca Cuvânt. cerere
Dim WordDoc Ca Cuvânt. Document
Dim WordTable ca Word. Masa
Următoarea linie de cod selectează o gamă specifică de celule și o salvează într-un obiect de rază Excel din VBA.
Set tblRange = Acest manual. Foi de lucru ( "Sheet1") Range. ( "A2: G44")
În continuare, doriți să verificați dacă aplicația Word este deja deschisă pe computer. Puteți face referință la aplicația Word utilizând o referință specială „de clasă” cu comanda VBA GetObject pentru a realiza acest lucru. Dacă Word nu este deja deschis, atunci linia următoare îl va lansa folosind funcția CreateObject. Linia „On Error Resume Next” împiedică orice eroare de la prima funcție GetObject (dacă Word nu este deja deschis) să oprească execuția liniei următoare din program.
On Error Resume Next
Setați WordApp = GetObject (class: = "Word. Aplicație ")
Dacă WordApp nu este nimic, atunci Setați WordApp = CreateObject (clasa: = "Word. Aplicație ")
Acum că aplicația Word este lansată, doriți să o faceți vizibilă pentru utilizator și să o activați pentru utilizare.
WordApp. Vizibil = Adevărat
WordApp. Activati
În continuare, doriți să creați un document nou în aplicația Word.
Setați WordDoc = WordApp. Documente. Adăuga
În cele din urmă, veți copia și lipi gama de celule într-un nou tabel din documentul Word.
tblRange. Copie
WordDoc. Alineatele (1) .Range. PasteExcelTable _
LinkedToExcel: = Fals, _
Formulare Word: = False, _
RTF: = False
Comutatoarele din funcția de mai sus vor insera un tabel nelegat folosind formatarea Excel sursă (nu formatare Word) și nu folosind format text bogat.
În cele din urmă, pentru a face față cu intervalele Excel mai largi decât documentul, va trebui să autentificați noua tabelă, astfel încât să se încadreze în marjele noului dvs. document Word.
Setați WordTable = WordDoc. Mese (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
Și acum ai terminat! Salvați fișierul ca fișier Excel activat macro (extensie .xlsm). Închideți editorul, salvați din nou fișierul Excel original, apoi faceți clic pe butonul de comandă pentru a vedea codul în acțiune!
Scrieți rezultatele Excel într-un tabel Word cu VBA
În această secțiune următoare, veți scrie cod VBA care efectuează calcule pe valori în Excel și le scrie pe un tabel în Word.
Pentru acest exemplu, vom trage date în valoare de 10 rânduri, vom calcula și vom scrie rezultatele într-un tabel dintr-un document Word. De asemenea, tabelul original va conține patru coloane, iar codul VBA va trage primele zece rânduri de date din acel interval.
La fel ca în ultima secțiune, vom parcurge fiecare secțiune la un moment dat, astfel încât să înțelegeți ce face codul respectiv și de ce.
Mai întâi, creați variabilele și obiectele care vor conține datele și vă permit să scrieți în aplicația Word.
Dim tblRange Ca Excel. Gamă
Dim WrdRange Ca Cuvânt. Gamă
Dim WordApp Ca Cuvânt. cerere
Dim WordDoc Ca Cuvânt. Document
Dim WordTable ca Word. Masa
Dim intRows
Dim intColumnii
Dim strDate ca șir
Dim strItem Ca șir
Dim intUnits ca variantă
Dim intCost ca variantă
Dim intTotal ca variantă
Apoi, setați totalul coloanelor și rândurilor pe care doriți să le citiți din intervalul Excel.
intNoOfRows = 10
intNoOfColumns = 5
Repetați același cod ca și ultima secțiune care va deschide Word dacă nu este deja deschisă.
On Error Resume Next
Setați WordApp = GetObject (class: = "Word. Aplicație ")
Dacă WordApp nu este nimic, atunci Setați WordApp = CreateObject (clasa: = "Word. Aplicație ")
WordApp. Vizibil = Adevărat
WordApp. Activati
Setați WordDoc = WordApp. Documente. Adăuga
Următoarele patru rânduri creează un tabel în interiorul acelui document Word recent deschis.
Setați WrdRange = WordDoc. Interval (0, 0)
WordDoc. Mese. Adăugați WrdRange, intNoOfRows, intNoOfColumns
Setați WordTable = WordDoc. Mese (1)
WordTable. Frontiere. Enable = True
În cele din urmă, următoarea buclă va efectua aceste acțiuni:
- Pentru fiecare rând, introduceți data, elementul, unitățile și costul comenzii în variabile
- Calculați costurile unitare de timp (vânzare totală) și păstrați-l într-o variabilă
- Pentru fiecare coloană, scrieți valorile în tabelul Word, inclusiv vânzarea totală calculată în ultima celulă
- Treceți la rândul următor și repetați procedura de mai sus
Iată cum arată codul respectiv:
Pentru i = 1 Pentru intNoOfRows
Pentru j = 1 Pentru intNoOfColumns
Dacă j = 1 Atunci
strDate = tblRange. Celule (i + 1, j) .Valor
strItem = tblRange. Celule (i + 1, j + 1) .Valor
intUnits = Val (tblRange. Celule (i + 1, j + 2). Valor)
intCost = Val (tblRange. Celule (i + 1, j + 3) .Valor)
intTotal = intUnits * intCost
End If
Selectați Cazul j
Cazul este = 1
WordTable. Celula (i, j) .Rang. Text = strDate
Cazul este = 2
WordTable. Celula (i, j) .Rang. Text = strItem
Cazul este = 3
WordTable. Celula (i, j) .Rang. Text = intUnits
Cazul este = 4
WordTable. Celula (i, j) .Rang. Text = intCost
Cazul este = 5
WordTable. Celula (i, j) .Rang. Text = intTotal
Alt caz
Selectare finală
Următor →
Următor →
Funcția „Celule” din prima parte trage de valorile celulare din Excel. Celulele (x, y) înseamnă că atrage valoarea celulei la rândul x și la coloana y.
Funcția „Cell” din ultima parte scrie în celulele din tabelul Word, folosind aceleași alocări de rând și coloană.
După ce salvați și executați acest cod VBA, veți vedea rezultatele în documentul Word recent creat.
După cum vedeți, nu este prea complicat să creați o automatizare utilă între Excel și Word. Este doar o problemă de a înțelege modul în care funcționează diferitele „obiecte” care pot crea și controla atât aplicațiile Excel, cât și aplicațiile Word de pe computer.