Понякога се налага да копираме данни от word документ в Excel файл. Можем да направим това много лесно с макрос във всички версии на офиса. Макросът ще отвори съществуващ / нов Excel файл, ще копира съдържанието и след това ще запише и затвори файла. Да видим как се прави това.
Опция Изрично
Sub OpenAndReadWordDoc ()
Dim tString As String
Dim p As Long, r As Long
Затъмнете wrdApp като обект, wrdDoc като обект
Dim wb Като работна книга
Dim trange като вариант
Задайте wb = Работни книги
С wb.Worksheets (1). Range („A1“)
.Value = „Съдържание на документ на Word:“
.Font.Bold = Вярно
.Размер на шрифта = 14
.Офсет (1,0) .Изберете
Край с
r = 3
Задайте wrdApp = CreateObject („Word.Application“)
wrdApp.Visible = Вярно
Задайте wrdDoc = wrdApp.Documents.Open („B: \ Test \ MyNewWordDoc.docx“)
С wrdDoc
За p = 1 до. Параграфи. Брой
Задайте trange = .Range (Старт: =. Параграфи (p). Range.Start, _
Край: =. Параграфи (p). Range.End)
tString = trange.Text
tString = Наляво (tString, Len (tString) -1)
Ако Instr (1, tString, ”1”)> 0 Тогава
wb.Worksheets (1) .Range (“A” & r) .Value = tString
r = r+1
Край Ако
Следващ стр
.Близо
Край с
wrdApp.Quit
Задайте wrdDoc = Нищо
Задайте wrdApp = Нищо
wb.Saved = Вярно
End Sub
За да копирате горния код във вашия файл,
- Натиснете Alt + F11 на клавиатурата
- От лявата страна ще видите Microsoft Excel Objects
- Щракнете с десния бутон и изберете Вмъкване
- След това щракнете върху Модул
- Копирайте кода в кодовия прозорец вдясно
Сега нека видим как работи този код -
Първо декларираме необходимите ни променливи -tstring като низ за съхраняване на текст (ще видим какъв текст по -късно). 2 променливи „p“ и „r“ като броячи. Те са от „дълъг“ тип. След това имаме 2 обектни променливи wrdApp и wrdDoc. wrdApp е обектът за приложение на думата, а wrdDoc е обектът на документ на Word. Wb е нашата променлива на работната книга за новата работна книга, която е създадена в кода. Ако отваряте съществуваща работна книга, вместо това можете да присвоите тази променлива на тази. Последната променлива е тип променлива на trange вариант, който ще съдържа съдържанието, което трябва да бъде прехвърлено от думата doc в Excel файла.
Задайте wb = Работни книги
Това присвоява новата работна книга на променливата wb. Ако не искате да добавяте нова работна книга, но отваряте съществуваща работна книга, можете да промените този ред, както следва -
Задайте wb - Workbooks.Open (“B: \ Test \ File1.xlsx”)
С wb.Worksheets (1). Range („A1“)
.Value = „Съдържание на документ на Word:“
.Font.Bold = Вярно
.Размер на шрифта = 14
.Офсет (1,0) .Изберете
Край с
Обхватът With wb.Worksheets (1) .range (“A1”) е бърз начин да го препратите. Така че не е нужно да го повтаряте за всеки от кодовите редове между With и End с изрази.
Тези редове код се поставят в текста „Съдържание на документ на Word:“ с удебелен шрифт и размер на шрифта 14 в клетка A1 на 1ул работен лист в новата работна книга. И след това .Offset (1,0) .Select избира следващия ред.
r = 3
На променливата “r” се присвоява стойност 3, тъй като това е началният ред в Excel файла за данните, които трябва да бъдат копирани от word документ.
Задайте wrdApp = CreateObject („Word.Application“)
Ако Word вече работи във вашата система,CreateObjectще създаде нов екземпляр на Word. Така че този ред присвоява обектната променлива wrdApp на Word приложението, което можете да използвате по -късно в кода.
wrdApp.Visible = Вярно
Новосъздаденият екземпляр на Word няма да се вижда, когато бъде създаден. За да стане видимо, трябва да зададете wrdApp.Visible = True, така че да се вижда.
Задайте wrdDoc = wrdApp.Documents.Open ("B: \ Test \ MyNewWordDoc.docx")
Създадохме новия екземпляр на думата приложение, но все още не сме отворили документ с изходна дума. Така че тази команда ще отвори думата документ. Обектът wrdDoc е присвоен на този документ, така че можем да го използваме по -късно в кода.
С wrdDoc …. Край с
Това е нашият цикъл „С“, който ще работи изцяло с обекта wrdDoc. След като отворите този цикъл, не е нужно да повтаряте отново текста „wrdDoc“ в този цикъл. Можете директно да започнете с точката (“.”) Преди обекти, свързани с wrdDoc. Този цикъл завършва с Край с изявление. След като операторът End With е въведен, не можете да се позовавате на обектите след wrdDoc само с „.“.
За p = 1 до. Параграфи. Брой
Това е цикълът „For“, който ще се върти от 1ул до последните параграфи в word документ. Word файлът, който съдържа данните, има 100 реда информация, всеки съхранен като отделен параграф. Цикълът ще се увеличи от 1 до 100 и ще копира абзаците. Ако са зададени определени условия, копиращата паста ще се основава на тези условия.
Задайте trange = .Range (Начало: =. Параграфи (p). Range.Start, End: =. Параграфи (p). Range.End)
Това определя началото и края на всеки параграф, за да варира с увеличаване на цикъла.
tString = trange.text
tString = Наляво (tString, len (tString) -1)
Първо текстът от trange се предава на TString. След това всеки параграф има символ на абзац в края на изречението. Това се премахва с помощта на функцията Left. От лявата страна всички знаци с изключение на последния се съхраняват в променливата tString.
Ако Instr (1, tString, “1”)> 0 Тогава
wb.Worksheets (1) .Range (“A” & r) .Value = tString
r = r+1
Край Ако
Тази функция IF проверява дали текстът в tString съдържа числото 1. Ако е вярно, тогава копира съдържанието на tString в следващия наличен ред в работната книга. „R“ първо имаше стойност 3. Използвайки r = r+1, го увеличаваме с 1, така че следващият запис може да бъде поставен под предишния запис.
Следващ стр
.Близо
The Следващ стр ред с увеличения на кода към следващия параграф.
.Близо затваря документа, след като всички параграфи са били обработени. Това е изходът, който получаваме в Excel файла -
Ще видите, че само тези абзаци, които съдържат номер 1 навсякъде в числото, са включени в изхода.
wrdApp.Quit
Задайте wrdDoc = Нищо
Задайте wrdApp = Нищо
wb.Saved = Вярно
wrdApp.Quit ще затвори думата Application. Задайте wrdDoc = Нищо и Задайте wrdApp = Нищо няма да освободи паметта, взета от тези 2 обектни променливи, и да ги зададе на Нищо. wb.Saved = True ще запази работната книга.
С горния код можем да контролираме кои данни да се копират от word файл в excel файл.