Upravljajte Excel iz Worda z uporabo VBA v programu Microsoft Excel 2010

Anonim

Včasih moramo podatke iz besedilnega dokumenta kopirati v datoteko Excel. To lahko zelo enostavno naredimo z makrom v vseh različicah pisarne. Makro bo odprl obstoječo / novo datoteko excel, kopiral vsebino in nato shranil in zaprl datoteko. Poglejmo, kako se to naredi.

Možnost izrecno


Sub OpenAndReadWordDoc ()
Zatemni tString kot niz
Dim p As Long, r As Long
Zatemni wrdApp kot objekt, wrdDoc kot objekt
Dim wb Kot delovni zvezek
Dim trange kot varianta

Nastavi wb = Delovni zvezki.Dodaj
Z wb. delovnimi listi (1). Obseg ("A1")
.Value = “Vsebina Wordovega dokumenta:”
.Font.Bold = Res
.Font.Size = 14
.Odmik (1,0) .Izberi
Končaj s

r = 3

Nastavite wrdApp = CreateObject (»Word.Application«)
wrdApp.Visible = Res
Nastavite wrdDoc = wrdApp.Documents.Open (“B: \ Test \ MyNewWordDoc.docx”)

Z wrdDoc
Za p = 1 do. Odstavki Štetje
Nastavi trange = .Range (Začetek: =. Odstavki (p) .Range.Start, _
Konec: =. Odstavki (p). Obseg. Konec)
tString = trange.Text
tString = Levo (tString, Len (tString) -1)

Če je Instr (1, tString, ”1”)> 0 Potem
wb. Delovni listi (1). Range (“A” & r) .Vrednost = tString
r = r+1
Konec Če

Naprej str
.Zapri

Končaj s

wrdApp.Quit
Nastavi wrdDoc = Nič
Nastavi wrdApp = Nič
wb.Saved = Res

End Sub

Če želite zgornjo kodo kopirati v svojo datoteko,

  • Pritisnite Alt + F11 na tipkovnici
  • Na levi strani boste videli predmete Microsoft Excel
  • Z desno tipko miške kliknite in izberite Vstavi
  • Nato kliknite na Modul
  • Kopirajte kodo v okno za kodo na desni

Zdaj pa poglejmo, kako deluje ta koda -

Najprej razglasimo spremenljivke, ki jih potrebujemo -tstring, kot niz za shranjevanje besedila (kakšno besedilo bomo videli kasneje). 2 spremenljivki "p" in "r" kot števci. Ti so "dolgi". Nato imamo dve objektni spremenljivki wrdApp in wrdDoc. wrdApp je besedni aplikacijski objekt in wrdDoc je dokumentni dokument Word. Wb je naša spremenljivka delovnega zvezka za nov delovni zvezek, ki je ustvarjen v kodi. Če odpirate obstoječi delovni zvezek, mu lahko to spremenljivko dodelite. Zadnja spremenljivka je vrsta spremenljivke trange, ki bo imela vsebino, ki jo je treba prenesti iz besede doc v datoteko excel.

Nastavi wb = Delovni zvezki.Dodaj

Tako se novi delovni zvezek dodeli spremenljivki wb. Če ne želite dodati novega delovnega zvezka, vendar odprete obstoječi delovni zvezek, lahko to vrstico spremenite na naslednji način -
Set wb - Workbooks.Open (“B: \ Test \ File1.xlsx”)

Z wb. delovnimi listi (1). Obseg ("A1")
.Value = “Vsebina Wordovega dokumenta:”
.Font.Bold = Res
.Font.Size = 14
.Odmik (1,0) .Izberi
Končaj s

Območje With wb.Worksheets (1) .range (»A1«) je hiter način sklicevanja nanj. Zato vam tega ni treba ponavljati za vsako od kodnih vrstic med stavki With in End z stavki.

Te vrstice kode vnesene v besedilo »Vsebina Wordovega dokumenta:« s krepko pisavo in velikostjo pisave 14 v celici A1 od 1st delovni list v novem delovnem zvezku. In nato .Offset (1,0) .Select izbere naslednjo vrstico.

r = 3

Spremenljivki »r« je dodeljena vrednost 3, saj je to začetna vrstica v datoteki excel za podatke, ki jih je treba kopirati iz besednega dokumenta.

Nastavite wrdApp = CreateObject (»Word.Application«)

Če Word že deluje v vašem sistemu,CreateObjectbo ustvaril nov primerek Worda. Tako ta vrstica dodeljuje spremenljivko objekta wrdApp Wordovi aplikaciji, ki jo lahko uporabite kasneje v kodi.

wrdApp.Visible = Res

Na novo ustvarjen primerek Worda ne bo viden, ko bo ustvarjen. Če želite, da je viden, morate nastaviti wrdApp.Visible = True, da bo viden.

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

Ustvarili smo nov primerek besedne aplikacije, vendar še nismo odprli izvornega besednega dokumenta. Tako bo ta ukaz odprl besedo document. Objekt wrdDoc je bil dodeljen temu dokumentu, zato ga lahko kasneje uporabimo v kodi.

Z wrdDoc…. Končaj z

To je naša zanka »S«, ki bo v celoti delovala s predmetom wrdDoc. Ko odprete to zanko, vam v tej zanki ni treba več ponavljati besedila »wrdDoc«. Lahko začnete neposredno s piko (“.”) Pred vsemi predmeti, ki se nanašajo na wrdDoc. Ta zanka se konča z Končaj s izjavo. Ko vnesete stavek End With, se na objekte po wrdDoc ne morete sklicevati samo z ».«.

Za p = 1 do. Odstavki Štetje

To je zanka "For", ki se bo vrtela od 1st do zadnjih odstavkov v besednem dokumentu. Besedna datoteka, ki vsebuje podatke, vsebuje 100 vrstic informacij, od katerih je vsaka shranjena kot ločen odstavek. Zanka se bo povečala od 1 do 100 in kopirala odstavke. Če so določeni nekateri pogoji, bo kopija prilepila na podlagi teh pogojev.

Nastavi trange = .Range (Začetek: =. Odstavki (p) .Range.start, konec: =. Odstavki (p). Range.End)

S tem se začetku in koncu vsakega odstavka dodeli obseg, kot je povečanje zanke.

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

Najprej se besedilo iz trange posreduje TStringu. Nato ima vsak odstavek znak odstavka na koncu stavka. To odstranite s funkcijo Left. Z leve strani so vsi znaki, razen zadnjega, shranjeni v spremenljivki tString.

Če je Instr (1, tString, “1”)> 0 Potem
wb. Delovni listi (1). Range (“A” & r) .Vrednost = tString
r = r+1
Konec Če

Ta funkcija IF preveri, ali besedilo v tString vsebuje številko 1. Če je res, potem kopira vsebino tStringa v naslednjo razpoložljivo vrstico v delovnem zvezku. "R" je najprej imelo vrednost 3. Z r = r+1 ga povečamo za 1, tako da lahko naslednji vnos postavimo pod prejšnji vnos.

Naprej str
.Zapri

The Naprej str vrstica prirastkov kode do naslednjega odstavka.

.Zapri zapre dokument, ko so obdelani vsi odstavki. To je rezultat, ki ga dobimo v datoteki excel -

Videli boste, da so v izpis vključeni le tisti odstavki, ki vsebujejo številko 1 kjer koli v številki.

wrdApp.Quit
Nastavi wrdDoc = Nič
Nastavi wrdApp = Nič
wb.Saved = Res

wrdApp.Quit zapre besedo Application. Set wrdDoc = Nič in Set wrdApp = Nič ne bo sprostilo pomnilnika, ki ga zajemata ti dve spremenljivki objektov, in jih nastavilo na Nič. wb.Saved = True bo shranil delovni zvezek.

Z zgornjo kodo lahko nadzorujemo, katere podatke želimo kopirati iz Wordove datoteke v Excelovo datoteko.