Kartais turime kopijuoti duomenis iš „Word“ dokumento į „Excel“ failą. Tai galime padaryti labai lengvai naudodami makrokomandą visose „Office“ versijose. Makrokomanda atidarys esamą / naują „Excel“ failą, nukopijuos turinį, tada išsaugos ir uždarys failą. Pažiūrėkime, kaip tai daroma.
Pasirinkimas aiškus
Sub OpenAndReadWordDoc ()
Dim tString kaip eilutė
Dim p Kaip ilgai, r Kaip ilgai
Dim wrdApp kaip objektas, wrdDoc kaip objektas
Dim wb Kaip darbo knyga
Dim trange As Variant
Nustatykite wb = Darbaknygės. Pridėti
Su wb. Darbo lapai (1). Diapazonas („A1“)
.Value = "Word dokumento turinys:"
.Font.Bold = Tiesa
.Šriftas.Dydis = 14
.Polinkis (1,0). Pasirinkite
Pabaiga su
r = 3
Nustatykite wrdApp = CreateObject („Word.Application“)
wrdApp.Visible = Tiesa
Nustatykite wrdDoc = wrdApp.Documents.Open („B: \ Test \ MyNewWordDoc.docx“)
Su wrdDoc
Jei p = 1 iki .Dalys.Skaičiuoti
Nustatykite trange = .Range (Pradėti: =. Pastraipos (p). Range.Start, _
Pabaiga: =. Pastraipos (p). Range.End)
tString = trange.Text
tString = kairė (tString, Len (tString) -1)
Jei Instr (1, tString, „1“)> 0 Tada
wb. Darbo lapai (1). Diapazonas („A“ ir r). Vertė = tString
r = r+1
Pabaiga Jei
Kitas p
.Uždaryti
Pabaiga su
wrdApp. Išeiti
Nustatyti wrdDoc = Nieko
Nustatyti wrdApp = Nieko
wb. Išsaugota = tiesa
Pabaiga Sub
Norėdami nukopijuoti aukščiau pateiktą kodą į savo failą,
- Klaviatūroje paspauskite Alt + F11
- Kairėje pusėje matysite „Microsoft Excel“ objektus
- Dešiniuoju pelės mygtuku spustelėkite ir pasirinkite Įterpti
- Tada spustelėkite „Modulis“
- Nukopijuokite kodą į kodo langą dešinėje
Dabar pažiūrėkime, kaip veikia šis kodas -
Pirmiausia mes deklaruojame reikiamus kintamuosius -tstring kaip eilutę tekstui laikyti (kokį tekstą pamatysime vėliau). 2 kintamieji „p“ ir „r“ kaip skaitikliai. Jie yra „ilgo“ tipo. Tada turime 2 objektų kintamuosius wrdApp ir wrdDoc. „wrdApp“ yra žodinis programos objektas, o „wrdDoc“ yra „Word“ dokumento objektas. Wb yra mūsų darbaknygės kintamasis naujai darbo knygai, kuri sukurta kode. Jei atidarote esamą darbaknygę, vietoj to galite priskirti šį kintamąjį. Paskutinis kintamasis yra kintamojo tipas, kurio turinys turi būti perkeltas iš žodžio doc į „Excel“ failą.
Nustatykite wb = Darbaknygės. Pridėti
Tai priskiria naują darbo knygą kintamajam wb. Jei nenorite pridėti naujos darbaknygės, bet atidaryti esamą, galite pakeisti šią eilutę taip:
Nustatykite wb - Darbaknygės. Atidarykite („B: \ Test \ File1.xlsx“)
Su wb. Darbo lapai (1). Diapazonas („A1“)
.Value = "Word dokumento turinys:"
.Font.Bold = Tiesa
.Šriftas.Dydis = 14
.Polinkis (1,0). Pasirinkite
Pabaiga su
Su „wb.Worksheets“ (1). Diapazonas („A1“) yra greitas būdas jį nurodyti. Taigi jums nereikia to kartoti kiekvienoje kodo eilutėje tarp teiginių su ir pabaiga.
Šios kodo eilutės įrašytos tekste „Word“ dokumento turinys: su paryškintu šriftu ir 14 šrifto dydžiu 1 langelyje A1st darbalapis naujoje darbaknygėje. Ir tada .Offset (1,0). Pasirinkus pasirenkama kita eilutė.
r = 3
Kintamajam „r“ priskiriama 3 reikšmė, nes tai yra „Excel“ failo pradinė eilutė duomenims, kurie turi būti nukopijuoti iš „Word“ dokumento.
Nustatykite wrdApp = CreateObject („Word.Application“)
Jei „Word“ jau veikia jūsų sistemoje,„CreateObject“sukurs naują „Word“ egzempliorių. Taigi ši eilutė priskiria objekto kintamąjį wrdApp „Word“ programai, kurią galite naudoti vėliau kodu.
wrdApp.Visible = Tiesa
Sukurtas naujai sukurtas „Word“ egzempliorius nebus matomas. Kad jis būtų matomas, turite nustatyti „wrdApp.Visible = True“, kad jis būtų matomas.
Nustatykite wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")
Mes sukūrėme naują „Word“ programos egzempliorių, bet dar neatidarėme šaltinio „Word“ dokumento. Taigi ši komanda atvers žodinį dokumentą. Šiam dokumentui buvo priskirtas objektas „wrdDoc“, kad vėliau galėtume jį naudoti kodu.
Su wrdDoc…. Pabaiga
Tai mūsų „Su“ kilpa, kuri visiškai veiks su „wrdDoc“ objektu. Atidarę šią kilpą, jums nebereikia kartoti teksto „wrdDoc“. Galite pradėti nuo taško („.“) Prieš bet kokius su „wrdDoc“ susijusius objektus. Ši kilpa baigiasi Pabaiga su pareiškimas. Įvedus „End With“ teiginį, negalite kreiptis į objektus po „wrdDoc“ naudodami tik „.“.
Jei p = 1 iki .Dalys.Skaičiuoti
Tai yra „For“ kilpa, kuri kilpos iš 1st iki paskutinių žodinio dokumento pastraipų. Žodinis failas, kuriame yra duomenys, turi 100 eilučių informacijos, kurių kiekviena saugoma kaip atskira pastraipa. Ciklas padidės nuo 1 iki 100 ir nukopijuos pastraipas. Jei nustatytos tam tikros sąlygos, kopijavimo pasta bus pagrįsta tomis sąlygomis.
Nustatykite trange = .Range (Pradžia: =. Pastraipos (p). Range.Start, End: =. Pastraipos (p). Range.End)
Tai priskiria kiekvienos pastraipos pradžią ir pabaigą diapazonui, kai ciklas didėja.
tString = trange.text
tString = kairė (tString, len (tString) -1)
Pirmiausia tekstas iš „Trange“ perduodamas TString. Tada kiekviena pastraipa sakinio pabaigoje turi pastraipos simbolį. Tai pašalinama naudojant kairės funkciją. Iš kairės pusės visi simboliai, išskyrus paskutinįjį, yra saugomi kintamajame tString.
Jei Instr (1, tString, „1“)> 0 Tada
wb. Darbo lapai (1). Diapazonas („A“ ir r). Vertė = tString
r = r+1
Pabaiga Jei
Ši IF funkcija patikrina, ar tString tekste yra skaičius 1. Jei jis teisingas, jis nukopijuoja tString turinį į kitą galimą darbaknygės eilutę. „R“ pirmiausia turėjo reikšmę 3. Naudodami r = r+1, padidiname jį 1, kad kitą įrašą būtų galima patalpinti žemiau ankstesnio įrašo.
Kitas p
.Uždaryti
The Kitas p kodo didinimo eilutė į kitą pastraipą.
.Uždaryti uždaro dokumentą, kai bus apdorotos visos pastraipos. Tai yra išvestis, kurią gauname „Excel“ faile -
Pamatysite, kad į išvestį įtraukiamos tik tos pastraipos, kuriose yra skaičius 1.
wrdApp. Išeiti
Nustatyti wrdDoc = Nieko
Nustatyti wrdApp = Nieko
wb. Išsaugota = tiesa
„wrdApp.Quit“ uždarys žodį „Application“. Nustatyti wrdDoc = Nieko ir Nustatyti wrdApp = Niekas neatlaisvins šių dviejų objektų kintamųjų užimtos atminties ir nustatys juos į Nieko. wb.Saved = Tiesa išsaugos darbaknygę.
Naudodami aukščiau esantį kodą galime valdyti, kuriuos duomenis reikia kopijuoti iš „Word“ failo į „Excel“ failą.