Upravljajte Excelom iz programa Word pomoću VBA u programu Microsoft Excel 2010

Anonim

Ponekad moramo kopirati podatke iz word dokumenta u excel datoteku. To možemo učiniti vrlo jednostavno pomoću makronaredbi u svim verzijama ureda. Makro će otvoriti postojeću / novu excel datoteku, kopirati sadržaj, a zatim spremiti i zatvoriti datoteku. Da vidimo kako se to radi.

Opcija Eksplicitno


Sub OpenAndReadWordDoc ()
Dim tString As String
Dim p As Long, r As Long
Zatamnite wrdApp kao objekt, wrdDoc kao objekt
Dim wb Kao radna bilježnica
Dim trange kao varijanta

Postavite wb = Radne knjige.Dodaj
S wb.Radnim listovima (1). Raspon ("A1")
.Value = "Sadržaj Word dokumenta:"
.Font.Bold = Istina
.Veličina fonta = 14
.Offset (1,0) .Odaberi
Završi s

r = 3

Postavite wrdApp = CreateObject ("Word.Application")
wrdApp.Visible = Istina
Postavite wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")

S wrdDoc
Za p = 1 do. Paragrafi. Brojanje
Postavi trange = .Range (Početak: =. Paragrafi (p) .Range.Start, _
Kraj: =. Odlomci (p). Raspon.Kraj)
tString = trange.Text
tString = Lijevo (tString, Len (tString) -1)

Ako je Instr (1, tString, ”1”)> 0 Tada
wb.Radni listovi (1) .Range (“A” & r) .Vrijednost = tString
r = r+1
Završi ako

Slijedeća str
.Zatvoriti

Završi s

wrdApp.Odustani
Postavite wrdDoc = Ništa
Postavite wrdApp = Ništa
wb.Saved = Istina

Kraj podm

Da biste gornji kôd kopirali u svoju datoteku,

  • Pritisnite Alt + F11 na tipkovnici
  • S lijeve strane vidjet ćete Microsoft Excel objekte
  • Desnom tipkom miša kliknite i odaberite Umetni
  • Zatim kliknite na Modul
  • Kopirajte kôd u prozor koda s desne strane

Sada da vidimo kako ovaj kod funkcionira -

Prvo deklariramo varijable koje su nam potrebne -tstring kao niz za držanje teksta (kasnije ćemo vidjeti koji tekst). 2 varijable "p" & "r" kao brojači. Oni su "dugog" tipa. Zatim imamo 2 objektne varijable wrdApp i wrdDoc. wrdApp je riječ aplikacijski objekt, a wrdDoc je Word dokument objekt. Wb je naša varijabla radne knjige za novu radnu knjigu stvorenu u kodu. Ako otvarate postojeću radnu knjigu, možete joj dodijeliti ovu varijablu. Posljednja varijabla je varijabla trange varijable koja će imati sadržaj koji je potrebno prenijeti iz riječi doc u excel datoteku.

Postavite wb = Radne knjige.Dodaj

Time se novoj radnoj knjizi dodjeljuje varijabla wb. Ako ne želite dodati novu radnu knjigu, ali otvoriti postojeću, možete promijeniti ovaj redak na sljedeći način -
Postavi wb - Workbooks.Open (“B: \ Test \ File1.xlsx”)

S wb.Radnim listovima (1). Raspon ("A1")
.Value = "Sadržaj Word dokumenta:"
.Font.Bold = Istina
.Veličina fonta = 14
.Offset (1,0) .Odaberi
Završi s

Raspon With wb.Worksheets (1) .range ("A1") brz je način pozivanja na njega. Dakle, ne morate to ponavljati za svaki kodni redak između With i End s izrazima.

Ovi redovi koda stavljeni u tekst "Sadržaj Wordovog dokumenta:" podebljanim fontom i veličinom fonta 14 u ćeliji A1 od 1sv radni list u novoj radnoj bilježnici. A zatim .Offset (1,0) .Select odabire sljedeći redak.

r = 3

Varijabli “r” dodjeljuje se vrijednost 3 jer je to početni redak u excel datoteci za podatke koje treba kopirati iz word dokumenta.

Postavite wrdApp = CreateObject ("Word.Application")

Ako je Word već pokrenut u vašem sustavu,CreateObjectstvorit će novu instancu Worda. Dakle, ovaj redak dodjeljuje varijablu objekta wrdApp Word aplikaciji koju kasnije možete koristiti u kodu.

wrdApp.Visible = Istina

Novostvorena instanca Worda neće biti vidljiva pri stvaranju. Da biste ga učinili vidljivim, morate postaviti wrdApp.Visible = True tako da bude vidljiv.

Postavite wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")

Izradili smo novu instancu riječi application, ali još nismo otvorili dokument izvorne riječi. Tako će ova naredba otvoriti riječ document. Objekt wrdDoc dodijeljen je ovom dokumentu pa ga kasnije možemo koristiti u kodu.

S wrdDoc… .Kraj sa

Ovo je naša petlja "With" koja će u potpunosti raditi s wrdDoc objektom. Nakon što otvorite ovu petlju, ne morate ponovno ponavljati tekst "wrdDoc" u ovoj petlji. Možete izravno početi s točkom (“.”) Prije bilo kakvih objekata koji se odnose na wrdDoc. Ova petlja završava s Završi s izjava. Nakon što je unesena naredba Kraj s, ne možete se pozivati ​​na objekte nakon wrdDoc samo s “.”.

Za p = 1 do. Paragrafi. Brojanje

Ovo je petlja "For" koja će se petljati od 1sv do posljednjih odlomaka u word dokumentu. Datoteka riječi koja sadrži podatke ima 100 redaka informacija, svaki pohranjen kao zaseban odlomak. Petlja će se povećavati od 1 do 100 i kopirati odlomke. Ako su postavljeni određeni uvjeti, kopija će se temeljiti na tim uvjetima.

Postavi trange = .Range (Početak: =. Odlomci (p) .Range.Početak, kraj: =. Paragrafi (p) .Range.End)

Time se početku i kraju svakog odlomka dodjeljuje raspon s povećanjem petlje.

tString = trange.text
tString = Lijevo (tString, len (tString) -1)

Prvo se tekst iz trangea prosljeđuje TStringu. Zatim svaki odlomak ima znak odlomka na kraju rečenice. To se uklanja pomoću funkcije Lijevo. S lijeve strane svi su znakovi osim posljednjeg pohranjeni u varijabli tString.

Ako je Instr (1, tString, “1”)> 0 Tada
wb.Radni listovi (1). Raspon (“A” & r) .Vrijednost = tString
r = r+1
Završi ako

Ova IF funkcija provjerava sadrži li tekst u tString broj 1. Ako je točan, tada kopira sadržaj tStringa u sljedeći dostupan redak u radnoj knjizi. "R" je prvo imalo vrijednost 3. Koristeći r = r+1, povećavamo ga za 1, tako da se sljedeći unos može postaviti ispod prethodnog unosa.

Slijedeća str
.Zatvoriti

The Slijedeća str redak povećanja koda do sljedećeg odlomka.

.Zatvoriti zatvara dokument nakon što se poradi na svim odlomcima. Ovo je izlaz koji dobivamo u excel datoteci -

Vidjet ćete da su samo oni odlomci koji sadrže broj 1 bilo gdje u broju uključeni u izlaz.

wrdApp.Odustani
Postavite wrdDoc = Ništa
Postavite wrdApp = Ništa
wb.Saved = Istina

wrdApp.Quit će zatvoriti riječ Application. Postavi wrdDoc = Ništa i Postavi wrdApp = Ništa neće osloboditi memoriju koju su uzele ove 2 varijable objekta i postaviti ih na Ništa. wb.Saved = True sprema radnu knjigu.

Pomoću gornjeg koda možemo kontrolirati koji će se podaci kopirati iz word datoteke u excel datoteku.