Mõnikord peame kopeerima andmed Wordi dokumendist Exceli faili. Me saame seda teha väga hõlpsalt makroga igas kontori versioonis. Makro avab olemasoleva / uue Exceli faili, kopeerib sisu ning salvestab ja sulgeb faili. Vaatame, kuidas seda tehakse.
Valik Selge
Alamosa OpenAndReadWordDoc ()
Dim tString stringina
Dim p As Long, r As Long
Dim wrdApp kui objekt, wrdDoc kui objekt
Dim wb Töövihikuna
Dim trange Nagu Variant
Määra wb = Töövihikud. Lisa
Wb. Töölehed (1). Vahemik (“A1”)
.Value = "Wordi dokumendi sisu:"
.Font.Bold = Tõsi
. Font. Suurus = 14
.Nihke (1,0). Valige
Lõpeta
r = 3
Määra wrdApp = CreateObject ("Word.Application")
wrdApp.Visible = Tõsi
Määra wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")
Koos wrdDoc
P = 1 kuni .Lõiked. Loend
Määra trange = .Range (Start: =. Lõigud (p). Range.Start, _
Lõpp: =. Lõigud (p). Vahemik.Lõpp)
tString = trange.Text
tString = vasak (tString, Len (tString) -1)
Kui Instr (1, tString, ”1”)> 0 Siis
wb. Töölehed (1). Vahemik ("A" & r) .Väärtus = tString
r = r+1
Lõpp Kui
Järgmine lk
.Sulge
Lõpeta
wrdApp. Lõpeta
Määra wrdDoc = Mitte midagi
Määra wrdApp = Mitte midagi
wb. Salvestatud = Tõsi
End Sub
Ülaltoodud koodi oma faili kopeerimiseks tehke järgmist.
- Vajutage klaviatuuril klahve Alt + F11
- Vasakul näete Microsoft Exceli objekte
- Paremklõpsake ja valige Lisa
- Seejärel klõpsake moodulil
- Kopeerige kood paremal asuvasse koodiaknasse
Nüüd vaatame, kuidas see kood töötab -
Kõigepealt deklareerime muutujad, mida me vajame -tstring stringina teksti hoidmiseks (millist teksti vaatame hiljem). 2 muutujat “p” ja “r” loenduritena. Need on "pikad" tüüpi. Siis on meil kaks objekti muutujat wrdApp ja wrdDoc. wrdApp on sõnarakenduse objekt ja wrdDoc on Wordi dokumendi objekt. Wb on meie töövihiku muutuja uue töövihiku jaoks, mis on koodis loodud. Kui avate olemasoleva töövihiku, saate selle muutuja selle asemel määrata. Viimane muutuja on muutuja tüübivariandi tüüp, millel on sisu, mis tuleb üle kanda sõnast doc Exceli faili.
Määra wb = Töövihikud. Lisa
See määrab uue töövihiku muutujale wb. Kui te ei soovi uut töövihikut lisada, vaid avate olemasoleva töövihiku, saate seda rida muuta järgmiselt.
Määra wb - töövihikud. Ava ("B: \ Test \ File1.xlsx")
Wb. Töölehed (1). Vahemik (“A1”)
.Value = "Wordi dokumendi sisu:"
.Font.Bold = Tõsi
. Font. Suurus = 14
.Nihke (1,0). Valige
Lõpeta
Koos wb.Worksheets (1) .range (“A1”) on sellele kiire viide. Nii et te ei pea seda kordama iga koodirida puhul, mis on lausete ja lõpu vahel.
Need koodiridad sisestatakse teksti lahtrisse A1 tekstiga „Wordi dokumendi sisu:” paksus kirjas ja kirjasuurusega 14.st tööleht uues töövihikus. Ja siis. Nihutamine (1,0). Valimine valib järgmise rea.
r = 3
Muutujale “r” määratakse väärtus 3, kuna see on Excel -faili algne rida Wordi dokumendist kopeeritavate andmete jaoks.
Määra wrdApp = CreateObject ("Word.Application")
Kui Word teie süsteemis juba töötab,CreateObjectloob uue Wordi eksemplari. Seega määrab see rida Wordi rakendusele objekti muutuja wrdApp, mida saate koodi hiljem kasutada.
wrdApp.Visible = Tõsi
Wordi äsja loodud eksemplar pole selle loomisel nähtav. Selle nähtavaks tegemiseks peate määrama wrdApp.Visible = True, nii et see oleks nähtav.
Määra wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")
Lõime sõnarakenduse uue eksemplari, kuid me pole veel avanud sõna -dokumenti. Nii et see käsk avab sõna dokumendi. Sellele dokumendile on määratud objekt wrdDoc, et saaksime seda koodi hiljem kasutada.
Koos wrdDoc… .Lõpeta
See on meie tsükkel “With”, mis töötab täielikult koos wrdDoc objektiga. Kui olete selle tsükli avanud, ei pea te selles silmus uuesti teksti “wrdDoc” kordama. Võite alustada punktiga (“.”) Enne mis tahes objekte, mis on seotud wrdDoc -iga. See silmus lõpeb Lõpeta avaldus. Kui lause End With on sisestatud, ei saa objektidele peale wrdDoc viidata ainult “.”.
P = 1 kuni .Lõiked. Loend
See on silmus “For”, mis hakkab ringlema 1 -stst Wordi dokumendi viimastesse lõikudesse. Andmeid sisaldavas sõnafailis on 100 rida teavet, millest igaüks on salvestatud eraldi lõiguna. Silmus suureneb 1 -lt 100 -le ja kopeerib lõigud. Kui teatud tingimused on seatud, põhineb koopiapasta nendel tingimustel.
Määra trange = .Range (Start: =. Lõigud (p). Range.Start, End: =. Lõigud (p). Range.End)
See määrab iga lõigu alguse ja lõpu vahemiku silmuse kasvades.
tString = trange.text
tString = vasak (tString, len (tString) -1)
Esiteks edastatakse tekst Trange'ist TStringile. Siis on igal lõigul lause lõpus lõik. See eemaldatakse funktsiooni Left abil. Vasakult küljelt salvestatakse muutujat tring kõik märgid peale viimase.
Kui Instr (1, tString, “1”)> 0 Siis
wb. Töölehed (1). Vahemik ("A" & r) .Väärtus = tString
r = r+1
Lõpp Kui
See IF -funktsioon kontrollib, kas tStringi tekst sisaldab numbrit 1. Kui see on tõene, kopeerib see tStringi sisu töövihiku järgmisele saadaolevale reale. “R” oli kõigepealt väärtus 3. Kasutades r = r+1, suurendame seda 1 võrra, nii et järgmise kirje saab paigutada eelmise kirje alla.
Järgmine lk
.Sulge
The Järgmine lk koodirida järgmisele lõigule.
.Sulge sulgeb dokumendi, kui kõik lõigud on töödeldud. See on väljund, mille saame Exceli faili -
Näete, et väljundisse lisatakse ainult need lõigud, mis sisaldavad numbrit 1 kõikjal numbris.
wrdApp. Lõpeta
Määra wrdDoc = Mitte midagi
Määra wrdApp = Mitte midagi
wb. Salvestatud = Tõsi
wrdApp.Quit sulgeb sõna Application. Set wrdDoc = Nothing ja Set wrdApp = Miski ei vabasta nende kahe objekti muutuja poolt võetud mälu ja määrab need väärtuseks Nothing. wb.Saved = Tõsi salvestab töövihiku.
Ülaltoodud koodiga saame kontrollida, milliseid andmeid Word -failist Exceli faili kopeerida.