Někdy musíme zkopírovat data z dokumentu aplikace Word do souboru aplikace Excel. Můžeme to udělat velmi snadno pomocí makra ve všech verzích Office. Makro otevře existující / nový soubor aplikace Excel, zkopíruje obsah a poté soubor uloží a zavře. Podívejme se, jak se to dělá.
Možnost Explicitní
Sub OpenAndReadWordDoc ()
Dim tString jako řetězec
Dim p As Long, r As Long
Dim wrdApp jako objekt, wrdDoc jako objekt
Dim wb jako sešit
Dim trange As Variant
Nastavit wb = Workbooks.Add
S pracovními listy wb (1). Rozsah („A1“)
.Value = „Obsah dokumentu Word:“
.Font.Bold = True
.Font.Size = 14
.Offset (1,0). Vyberte
Konec s
r = 3
Nastavit wrdApp = CreateObject („Word.Application“)
wrdApp.Visible = True
Nastavit wrdDoc = wrdApp.Documents.Open („B: \ Test \ MyNewWordDoc.docx“)
S wrdDoc
Pro p = 1 až .Paragraphs.Count
Nastavit trange = .Range (Začátek: =. Odstavce (p) .Range.Start, _
Konec: =. Odstavce (p) .Range.End)
tString = trange.Text
tString = Left (tString, Len (tString) -1)
Pokud Instr (1, tString, ”1”)> 0 Pak
wb. Pracovní listy (1). Rozsah („A“ & r). Hodnota = tString
r = r+1
Konec If
Další str
.Zavřít
Konec s
wrdApp.Quit
Nastavit wrdDoc = Nic
Nastavit wrdApp = Nic
wb.Saved = Pravda
End Sub
Chcete -li výše uvedený kód zkopírovat do souboru,
- Stiskněte Alt + F11 na klávesnici
- Na levé straně uvidíte objekty aplikace Microsoft Excel
- Klikněte pravým tlačítkem a vyberte Vložit
- Poté klikněte na Modul
- Zkopírujte kód do okna kódu vpravo
Nyní se podívejme, jak tento kód funguje -
Nejprve deklarujeme proměnné, které potřebujeme -tstring, jako řetězec pro uložení textu (jaký text uvidíme později). 2 proměnné „p“ a „r“ jako čítače. Jedná se o „dlouhý“ typ. Pak máme 2 objektové proměnné wrdApp a wrdDoc. wrdApp je objekt aplikace Word a wrdDoc je objekt dokumentu aplikace Word. Wb je naše proměnná sešitu pro nový sešit, který je vytvořen v kódu. Pokud otevíráte existující sešit, můžete místo toho přiřadit tuto proměnnou. Poslední proměnnou je typ proměnné varianty tranže, která bude mít obsah, který je třeba přenést ze slova doc do souboru aplikace Excel.
Nastavit wb = Workbooks.Add
To přiřadí nový sešit proměnné wb. Pokud nechcete přidat nový sešit, ale otevřít stávající sešit, můžete tento řádek změnit následujícím způsobem -
Nastavit wb - Workbooks.Open (“B: \ Test \ File1.xlsx”)
S pracovními listy wb (1). Rozsah („A1“)
.Value = „Obsah dokumentu Word:“
.Font.Bold = True
.Font.Size = 14
.Offset (1,0). Vyberte
Konec s
S wb.Worksheets (1) .range („A1“) je rychlý způsob, jak na něj odkazovat. Nemusíte to tedy opakovat pro každý z řádků kódu mezi příkazy With a End with.
Tyto řádky kódu vložily do textu „Obsah dokumentu Word:“ tučným písmem a velikostí písma 14 do buňky A1 1Svatý list v novém sešitu. A pak .Offset (1,0). Select vybere další řádek.
r = 3
Proměnné „r“ je přiřazena hodnota 3, protože toto je počáteční řádek v souboru aplikace Excel pro data, která se mají zkopírovat ze slovního dokumentu.
Nastavit wrdApp = CreateObject („Word.Application“)
Pokud je již Word ve vašem systému spuštěn,CreateObjectvytvoří novou instanci aplikace Word. Tento řádek tedy přiřadí objektovou proměnnou wrdApp aplikaci Word, kterou můžete použít později v kódu.
wrdApp.Visible = True
Nově vytvořená instance aplikace Word nebude při vytváření viditelná. Aby byla viditelná, musíte nastavit wrdApp.Visible = True, aby byla viditelná.
Nastavit wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")
Vytvořili jsme novou instanci aplikace word, ale ještě jsme neotevřeli dokument zdrojového slova. Tento příkaz tedy otevře dokument aplikace Word. K tomuto dokumentu byl přiřazen objekt wrdDoc, abychom jej mohli použít později v kódu.
S wrdDoc…. Konec s
Toto je naše smyčka „With“, která bude zcela fungovat s objektem wrdDoc. Jakmile tuto smyčku otevřete, nemusíte v této smyčce znovu opakovat text „wrdDoc“. Můžete začít přímo tečkou („.“) Před objekty souvisejícími s wrdDoc. Tato smyčka končí znakem Konec s tvrzení. Jakmile zadáte příkaz End With, nemůžete na objekty za wrdDoc odkazovat pouhým „.“.
Pro p = 1 až .Paragraphs.Count
Toto je smyčka „For“, která se bude opakovat od 1Svatý do posledních odstavců dokumentu aplikace Word. Soubor slov, který obsahuje data, má 100 řádků informací, každý uložený jako samostatný odstavec. Smyčka se zvýší od 1 do 100 a zkopíruje odstavce. Pokud jsou nastaveny určité podmínky, vložení kopie bude založeno na těchto podmínkách.
Nastavit trange = .Range (Začátek: =. Odstavce (p) .Range.Start, End: =. Odstavce (p) .Range.End)
To přiřadí začátek a konec každého odstavce rozsahu jako přírůstky smyčky.
tString = trange.text
tString = Left (tString, len (tString) -1)
Nejprve je text z tranše předán do TString. Pak má každý odstavec znak odstavce na konci věty. To se odstraní pomocí funkce Left. Z levé strany jsou všechny znaky kromě posledního uloženy v proměnné tString.
Pokud Instr (1, tString, „1“)> 0 Pak
wb. Pracovní listy (1). Rozsah („A“ & r). Hodnota = tString
r = r+1
Konec If
Tato funkce IF kontroluje, zda text v tString obsahuje číslo 1. Pokud je pravdivé, zkopíruje obsah tString do dalšího dostupného řádku v sešitu. „R“ měl nejprve hodnotu 3. Pomocí r = r+1 ji zvýšíme o 1, takže další položku lze umístit pod předchozí položku.
Další str
.Zavřít
The Další str řádek kódu se zvyšuje na další odstavec.
.Zavřít zavře dokument, jakmile byly zpracovány všechny odstavce. Toto je výstup, který získáme v souboru Excel -
Uvidíte, že do výstupu budou zahrnuty pouze ty odstavce, které obsahují číslo 1 kdekoli v čísle.
wrdApp.Quit
Nastavit wrdDoc = Nic
Nastavit wrdApp = Nic
wb.Saved = Pravda
wrdApp.Quit zavře slovo Aplikace. Nastavit wrdDoc = Nic a Nastavit wrdApp = Nic uvolní paměť odebranou těmito 2 objektovými proměnnými a nastaví je na Nic. wb.Saved = True uloží sešit.
Pomocí výše uvedeného kódu můžeme řídit, která data se mají zkopírovat ze souboru Word do souboru Excel.