Joskus meidän on kopioitava tiedot Word -asiakirjasta Excel -tiedostoon. Voimme tehdä tämän erittäin helposti makron kanssa kaikissa Office -versioissa. Makro avaa olemassa olevan / uuden Excel -tiedoston, kopioi sisällön ja tallentaa ja sulkee tiedoston. Katsotaan miten tämä tehdään.
Vaihtoehto Selkeä
Sub OpenAndReadWordDoc ()
Dim tString merkkijonona
Dim p Niin pitkä, r Niin pitkä
Dim wrdApp objektina, wrdDoc objektina
Dim wb Työkirjana
Dim trange Kuten vaihtoehto
Aseta wb = Työkirjat
Wb. Työkirjat (1). Alue ("A1")
.Value = "Word -asiakirjan sisältö:"
.Font.Bold = Totta
.Font.Size = 14
Siirrä (1,0) Valitse
Lopeta
r = 3
Aseta wrdApp = CreateObject ("Word.Application")
wrdApp.Visible = Totta
Aseta wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")
WrdDocin kanssa
P = 1 -
Aseta trange = .Range (Start: =. Kappaleet (p). Range.Start, _
Loppu: =. Kappaleet (p). Range.End)
tString = trange.Text
tString = Vasen (tString, Len (tString) -1)
Jos Instr (1, tString, ”1”)> 0 Sitten
wb. Työsivut (1). Alue ("A" & r). Arvo = tString
r = r+1
Loppu Jos
Seuraava s
.Kiinni
Lopeta
wrdApp.Lopeta
Aseta wrdDoc = Ei mitään
Aseta wrdApp = ei mitään
wb.Saved = Totta
End Sub
Jos haluat kopioida yllä olevan koodin tiedostoosi,
- Paina näppäimistön näppäinyhdistelmää Alt + F11
- Vasemmalla puolella näet Microsoft Excel -objektit
- Napsauta hiiren kakkospainikkeella ja valitse Lisää
- Napsauta sitten Moduuli
- Kopioi koodi oikealla olevaan ikkunaan
Katsotaan nyt kuinka tämä koodi toimii -
Ilmoitamme ensin muuttujat, joita tarvitsemme -tstring merkkijonoksi tekstin pitämiseksi (näemme, mitä tekstiä myöhemmin). 2 muuttujaa “p” ja “r” laskureina. Nämä ovat "pitkiä" tyyppiä. Sitten meillä on kaksi objektimuuttujaa wrdApp ja wrdDoc. wrdApp on sanasovellusobjekti ja wrdDoc on Word -asiakirjaobjekti. Wb on työkirjamuuttujamme uuteen työkirjaan, joka luodaan koodiin. Jos avaat olemassa olevan työkirjan, voit määrittää tämän muuttujan sille. Viimeinen muuttuja on muuttujan muuttujatyyppi, jonka sisältö on siirrettävä sanasta doc Excel -tiedostoon.
Aseta wb = Työkirjat
Tämä määrittää uuden työkirjan wb -muuttujalle. Jos et halua lisätä uutta työkirjaa, mutta avaat olemassa olevan työkirjan, voit muuttaa tätä riviä seuraavasti:
Aseta wb - työkirjat. Avaa ("B: \ Test \ File1.xlsx")
Wb. Työkirjat (1). Alue ("A1")
.Value = "Word -asiakirjan sisältö:"
.Font.Bold = Totta
.Font.Size = 14
Siirrä (1,0) Valitse
Lopeta
With wb.Worksheets (1) .range (“A1”) on nopea tapa viitata siihen. Sinun ei siis tarvitse toistaa sitä jokaiselle koodiriville, jossa on With ja End with lauseet.
Nämä koodirivit ovat tekstissä "Word -asiakirjan sisältö:", lihavoitu kirjasin ja kirjasinkoko 14 1: n solussa A1st laskentataulukko uudessa työkirjassa. Ja sitten. Offset (1,0). Valitsee seuraavan rivin.
r = 3
Muuttuja "r" saa arvon 3, koska tämä on Excel -tiedoston aloitusrivi Word -asiakirjasta kopioitaville tiedoille.
Aseta wrdApp = CreateObject ("Word.Application")
Jos Word on jo käynnissä järjestelmässäsi,CreateObjectluo uuden Word -ilmentymän. Joten tämä rivi määrittää objektimuuttujan wrdApp Word -sovellukselle, jota voit käyttää myöhemmin koodissa.
wrdApp.Visible = Totta
Äskettäin luotu Word -esiintymä ei ole näkyvissä, kun se luodaan. Jotta se olisi näkyvissä, sinun on asetettava wrdApp.Visible = True niin, että se näkyy.
Aseta wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")
Loimme sanasovelluksen uuden esiintymän, mutta emme ole vielä avanneet lähdesanadokumenttia. Tämä komento avaa sanaasiakirjan. Objekti wrdDoc on määritetty tälle asiakirjalle, jotta voimme käyttää sitä myöhemmin koodissa.
WrdDocin kanssa … Lopeta
Tämä on "With" -silmukka, joka toimii täysin wrdDoc -objektin kanssa. Kun avaat tämän silmukan, sinun ei tarvitse toistaa tekstiä "wrdDoc" uudelleen tässä silmukassa. Voit aloittaa suoraan pisteellä (“.”) Ennen mitään wrdDociin liittyviä kohteita. Tämä silmukka päättyy Lopeta lausunto. Kun End With -lauseke on syötetty, et voi viitata wrdDoc -jälkeisiin objekteihin vain ”.” -Merkillä.
Jos p = 1 -
Tämä on For -silmukka, joka tulee silmukasta 1st Word -asiakirjan viimeisiin kappaleisiin. Tiedot sisältävässä sanatiedostossa on 100 riviä tietoja, joista jokainen on tallennettu erillisenä kappaleena. Silmukka kasvaa 1: stä 100: een ja kopioi kappaleet. Jos tietyt ehdot asetetaan, kopiointi liitetään kyseisiin ehtoihin.
Aseta trange = .Range (Start: =. Kappaleet (p). Range.Start, End: =. Kappaleet (p). Range.End)
Tämä määrittää kunkin kappaleen alun ja lopun alueeksi silmukan kasvaessa.
tString = trange.text
tString = Vasen (tString, len (tString) -1)
Ensin trange -teksti välitetään TStringille. Sitten jokaisessa kappaleessa on kappaleen merkki lauseen lopussa. Tämä poistetaan Vasen -toiminnolla. Vasemmalta puolelta kaikki merkit viimeistä lukuun ottamatta tallennetaan tString -muuttujaan.
Jos Instr (1, tString, “1”)> 0 Sitten
wb. Työsivut (1). Alue ("A" & r). Arvo = tString
r = r+1
Loppu Jos
Tämä IF -toiminto tarkistaa, onko tString -tekstissä numero 1. Jos se on tosi, se kopioi tString -sisällön työkirjan seuraavaan vapaaseen riviin. "R": llä oli ensin arvo 3. Käyttämällä r = r+1, kasvatamme sitä yhdellä, jotta seuraava merkintä voidaan sijoittaa edellisen merkinnän alle.
Seuraava s
.Kiinni
The Seuraava s rivin koodin lisäykset seuraavaan kappaleeseen.
.Kiinni sulkee asiakirjan, kun kaikkia kappaleita on käsitelty. Tämä on tulos, jonka saamme Excel -tiedostossa -
Näet, että vain ne kappaleet, jotka sisältävät numeron 1 missä tahansa numerossa, sisältyvät tulostukseen.
wrdApp.Lopeta
Aseta wrdDoc = Ei mitään
Aseta wrdApp = ei mitään
wb.Saved = Totta
wrdApp.Quit sulkee sanan Application. Aseta wrdDoc = Ei mitään ja Aseta wrdApp = Mikään ei vapauta näiden kahden objektimuuttujan ottamaa muistia ja aseta niiden arvoksi Ei mitään. wb.Saved = Tosi tallentaa työkirjan.
Yllä olevan koodin avulla voimme hallita, mitkä tiedot kopioidaan Word -tiedostosta Excel -tiedostoon.