Niekedy musíme skopírovať údaje z dokumentu programu Word do súboru programu Excel. To môžeme veľmi ľahko dosiahnuť pomocou makra vo všetkých verziách kancelárie. Makro otvorí existujúci / nový súbor programu Excel, skopíruje obsah a potom súbor uloží a zatvorí. Pozrime sa, ako sa to robí.
Možnosť explicitná
Sub OpenAndReadWordDoc ()
Dim tString as String
Dim p As Long, r As Long
Dim wrdApp ako objekt, wrdDoc ako objekt
Dim wb ako zošit
Dim trange As Variant
Nastaviť wb = zošity. Pridať
S wb. Pracovnými listami (1). Rozsah („A1“)
.Value = „Obsah dokumentu Word:“
.Font.Bold = Pravda
.Font.Size = 14
.Offset (1,0). Vyberte
Ukončiť s
r = 3
Nastaviť wrdApp = CreateObject („Word.Application“)
wrdApp.Visible = Pravda
Nastaviť wrdDoc = wrdApp.Documents.Open („B: \ Test \ MyNewWordDoc.docx“)
S wrdDoc
Pre p = 1 až .Paragrafy. Počítať
Nastaviť tranžu = .Rozsah (Začiatok: =. Odseky (p). Range.Start, _
Koniec: =. Odseky (p) .Range.End)
tString = tranža. Text
tString = vľavo (tString, Len (tString) -1)
Ak je Instr (1, tString, ”1”)> 0 Potom
wb. Pracovné listy (1). Rozsah („A“ & r). Hodnota = tString
r = r+1
Koniec Ak
Ďalej p
.Zavrieť
Ukončiť s
wrdApp.Quit
Nastaviť wrdDoc = nič
Nastaviť wrdApp = nič
wb.Saved = Pravda
Koniec pod
Ak chcete skopírovať vyššie uvedený kód do svojho súboru,
- Na klávesnici stlačte kombináciu klávesov Alt + F11
- Na ľavej strane uvidíte objekty programu Microsoft Excel
- Kliknite pravým tlačidlom myši a zvoľte Vložiť
- Potom kliknite na modul
- Skopírujte kód do okna kódu vpravo
Teraz sa pozrime, ako tento kód funguje -
Najprv deklarujeme premenné, ktoré potrebujeme -reťazec, ako reťazec na uchovávanie textu (aký text uvidíme neskôr). 2 premenné „p“ a „r“ ako počítadlá. Sú to „dlhé“ typy. Potom máme 2 objektové premenné wrdApp a wrdDoc. wrdApp je objekt aplikácie Word a wrdDoc je objekt dokumentu Word. Wb je naša premenná zošita pre nový zošit, ktorý je vytvorený v kóde. Ak otvárate existujúci zošit, môžete mu namiesto toho priradiť túto premennú. Posledná premenná je typ premennej variantu tranže, ktorá bude mať obsah, ktorý je potrebné preniesť zo slova doc do súboru programu Excel.
Nastaviť wb = zošity. Pridať
Nový zošit sa tým priradí premennej wb. Ak nechcete pridať nový zošit, ale otvoriť existujúci zošit, môžete tento riadok zmeniť nasledovne -
Nastaviť wb - zošity. Otvorené („B: \ Test \ File1.xlsx“)
S wb. Pracovnými listami (1). Rozsah („A1“)
.Value = „Obsah dokumentu Word:“
.Font.Bold = Pravda
.Font.Size = 14
.Offset (1,0). Vyberte
Ukončiť s
S With wb.Worksheets (1) .range (“A1”) is a quick way of reference it. Nemusíte to teda opakovať pre každý z riadkov kódu medzi príkazmi With a End with.
Tieto riadky kódu vložili do textu „Obsah dokumentu Word:“ tučným písmom a veľkosťou písma 14 do bunky A1 z 1.sv pracovný list v novom pracovnom zošite. A potom. Offset (1,0). Vybrať vyberie nasledujúci riadok.
r = 3
Premennej „r“ je priradená hodnota 3, pretože toto je počiatočný riadok v súbore Excel pre údaje, ktoré sa majú skopírovať z dokumentu Word.
Nastaviť wrdApp = CreateObject („Word.Application“)
Ak je už Word vo vašom systéme spustený,CreateObjectvytvorí novú inštanciu programu Word. Tento riadok teda priradí objektovú premennú wrdApp k aplikácii Word, ktorú môžete použiť neskôr v kóde.
wrdApp.Visible = Pravda
Novovytvorená inštancia programu Word nebude pri vytváraní viditeľná. Aby bol viditeľný, musíte nastaviť wrdApp.Visible = True, aby bol viditeľný.
Nastaviť wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")
Vytvorili sme novú inštanciu aplikácie word, ale ešte sme neotvorili zdrojový dokument dokumentu. Tento príkaz teda otvorí dokument programu Word. K tomuto dokumentu bol priradený objekt wrdDoc, aby sme ho mohli použiť neskôr v kóde.
S wrdDoc…. Ukončiť s
Toto je naša slučka „With“, ktorá bude fungovať úplne s objektom wrdDoc. Akonáhle otvoríte túto slučku, už nemusíte v tejto slučke opakovať text „wrdDoc“. Začnite priamo bodkou („.“) Pred akýmikoľvek predmetmi súvisiacimi s wrdDoc. Táto slučka končí príponou Ukončiť s vyhlásenie. Po zadaní príkazu End With sa nemôžete na objekty za wrdDoc odkazovať iba pomocou znamienka „.“.
Pre p = 1 až .Paragrafy. Počítať
Toto je slučka „For“, ktorá sa bude opakovať od 1sv do posledných odsekov v dokumente Word. Slovný súbor, ktorý obsahuje údaje, má 100 riadkov informácií, z ktorých každý je uložený ako samostatný odsek. Cyklus sa zvýši o 1 až 100 a skopíruje odseky. Ak sú nastavené určité podmienky, prilepenie kópie bude založené na týchto podmienkach.
Nastaviť tranž = .Rozsah (Začiatok: =. Odseky (p). Rozsah. Začiatok, Koniec: =. Odseky (p). Rozsah. Koniec)
To priradí začiatok a koniec každého odseku k rozsahu ako prírastky slučky.
tString = trange.text
tString = vľavo (tString, len (tString) -1)
Text z tranže je najskôr odoslaný do TString. Potom má každý odsek na konci vety znak odseku. Toto sa odstráni pomocou funkcie Vľavo. Z ľavej strany sú všetky znaky okrem posledného uložené v premennej tString.
Ak je Instr (1, tString, „1“)> 0 Potom
wb. Pracovné listy (1). Rozsah („A“ & r). Hodnota = tString
r = r+1
Koniec Ak
Táto funkcia IF kontroluje, či text v tString obsahuje číslo 1. Ak je pravdivý, skopíruje obsah tString do ďalšieho dostupného riadka v zošite. „R“ mal najskôr hodnotu 3. Použitím r = r+1 ho zvýšime o 1, takže nasledujúci záznam môže byť umiestnený pod predchádzajúci záznam.
Ďalej p
.Zavrieť
The Ďalej p riadok prírastkov kódu do nasledujúceho odseku.
.Zavrieť zatvorí dokument po spracovaní všetkých odsekov. Toto je výstup, ktorý dostaneme v súbore Excel -
Uvidíte, že výstupom sú zahrnuté iba tie odseky, ktoré obsahujú číslo 1 kdekoľvek v čísle.
wrdApp.Quit
Nastaviť wrdDoc = nič
Nastaviť wrdApp = nič
wb.Saved = Pravda
wrdApp.Quit zatvorí slovo Aplikácia. Nastaviť wrdDoc = Nič a Nastaviť wrdApp = Nič uvoľní pamäť zaberanú týmito 2 objektovými premennými a nastaví ich na Nič. wb.Saved = True uloží zošit.
Pomocou vyššie uvedeného kódu môžeme ovládať, ktoré údaje sa majú kopírovať zo súboru programu Word do súboru programu Excel.