Управљајте Екцелом из програма Ворд помоћу ВБА у програму Мицрософт Екцел 2010

Anonim

Понекад морамо копирати податке из ворд документа у екцел датотеку. То можемо учинити врло лако помоћу макроа у свим верзијама канцеларије. Макро ће отворити постојећу / нову екцел датотеку, копирати садржај, а затим сачувати и затворити датотеку. Да видимо како се то ради.

Опција Експлицитно


Суб ОпенАндРеадВордДоц ()
Дим тСтринг Ас Стринг
Дим п Ас Лонг, р Ас Лонг
Затамните врдАпп као објекат, врдДоц као објекат
Дим вб Као радна свеска
Дим транге Ас Вариант

Сет вб = Воркбоокс.Адд
Са вб.Ворксхеетс (1) .Ранге („А1“)
.Валуе = „Садржај Ворд документа:“
.Фонт.Болд = Тачно
.Фонт.Сизе = 14
.Оффсет (1,0) .Одабери
Завршити

р = 3

Подесите врдАпп = ЦреатеОбјецт („Ворд.Апплицатион“)
врдАпп.Висибле = Тачно
Подесите врдДоц = врдАпп.Доцументс.Опен („Б: \ Тест \ МиНевВордДоц.доцк“)

Са врдДоц
За п = 1 до .Параграфи
Подесите транге = .Ранге (Старт: =. Параграфи (п) .Ранге.Старт, _
Крај: =. Параграфи (п) .Ранге.Енд)
тСтринг = транге.Тект
тСтринг = Лево (тСтринг, Лен (тСтринг) -1)

Ако је Инстр (1, тСтринг, ”1”)> 0 Тада
вб.Ворксхеетс (1) .Ранге (“А” & р) .Валуе = тСтринг
р = р+1
Крај Ако

Нект п
.Близу

Завршити

врдАпп.Куит
Сет врдДоц = Ништа
Подесите врдАпп = Ништа
вб.Савед = Тачно

Енд Суб

Да бисте копирали горњи код у своју датотеку,

  • Притисните Алт + Ф11 на тастатури
  • Са леве стране видећете Мицрософт Екцел објекте
  • Кликните десним тастером миша и изаберите Уметни
  • Затим кликните на Модул
  • Копирајте код у кодни прозор са десне стране

Сада да видимо како овај код функционише -

Прво декларишемо променљиве које су нам потребне -тстринг као стринг за држање текста (касније ћемо видети који текст). 2 променљиве „п“ и „р“ као бројачи. Они су типа „дуги“. Затим имамо 2 променљиве објекта врдАпп и врдДоц. врдАпп је реч апликацијски објекат, а врдДоц је Ворд документ објекат. Вб је наша променљива радне свеске за нову радну свеску која је креирана у коду. Ако отварате постојећу радну свеску, можете уместо ње доделити ову променљиву. Последња променљива је варијабла типа транге варијабле која ће имати садржај који је потребно пренети из речи доц у датотеку екцел.

Сет вб = Воркбоокс.Адд

Ово додељује нову радну свеску променљивој вб. Ако не желите да додате нову радну свеску, већ отворите постојећу, можете да промените овај ред на следећи начин -
Сет вб - Воркбоокс.Опен (“Б: \ Тест \ Филе1.клск”)

Са вб.Ворксхеетс (1) .Ранге („А1“)
.Валуе = „Садржај Ворд документа:“
.Фонт.Болд = Тачно
.Фонт.Сизе = 14
.Оффсет (1,0) .Одабери
Завршити

Опсег Витх вб.Ворксхеетс (1) .ранге (“А1”) је брз начин позивања на њега. Дакле, не морате то понављати за сваку од линија кода између Витх и Енд са изразима.

Ови редови кода стављени у текст „Садржај Ворд документа:“ подебљаним фонтом и величином фонта 14 у ћелији А1 од 1ст радни лист у новој радној свесци. А затим .Оффсет (1,0). Селецт одабире следећи ред.

р = 3

Променљивој „р“ додељује се вредност 3 јер је то почетни ред у екцел датотеци за податке које треба копирати из ворд документа.

Подесите врдАпп = ЦреатеОбјецт („Ворд.Апплицатион“)

Ако је Ворд већ покренут у вашем систему,ЦреатеОбјецтће створити нову инстанцу Ворда. Дакле, ова линија додељује променљиву објекта врдАпп Ворд апликацији коју касније можете користити у коду.

врдАпп.Висибле = Тачно

Новостворена инстанца Ворда неће бити видљива када се креира. Да бисте га учинили видљивим, морате поставити врдАпп.Висибле = Труе тако да буде видљив.

Подесите врдДоц = врдАпп.Доцументс.Опен ("Б: \ Тест \ МиНевВордДоц.доцк")

Направили смо нову инстанцу речи апплицатион, али још нисмо отворили документ изворне речи. Дакле, ова команда ће отворити реч доцумент. Објекат врдДоц је додељен овом документу тако да га касније можемо користити у коду.

Са врдДоц… .Крај са

Ово је наша петља „Витх“ која ће у потпуности радити са врдДоц објектом. Када отворите ову петљу, не морате поново да понављате текст „врдДоц“ у овој петљи. Можете директно почети са тачком (“.”) Пре било каквих објеката који се односе на врдДоц. Ова петља се завршава са Завршити изјава. Након што је унета наредба Енд Витх, не можете се позивати на објекте након врдДоц само са „.“.

За п = 1 до .Параграфи

Ово је петља „За“ која ће се петљати од 1ст до последњих пасуса у ворд документу. Датотека речи која садржи податке има 100 редова информација, од којих је сваки сачуван као посебан пасус. Петља ће се повећавати од 1 до 100 и копирати пасусе. Ако су постављени одређени услови, копија ће се заснивати на тим условима.

Подесите транге = .Ранге (Старт: =. Параграфи (п) .Ранге.Старт, Енд: =. Параграфи (п) .Ранге.Енд)

Ово додељује почетак и крај сваког параграфа опсегу како се петља повећава.

тСтринг = транге.тект
тСтринг = Лево (тСтринг, лен (тСтринг) -1)

Прво се текст из транге -а прослеђује ТСтринг -у. Затим сваки пасус има карактер пасуса на крају реченице. Ово се уклања помоћу функције Лефт. Са леве стране, сви знакови осим последњег смештени су у променљивој тСтринг.

Ако је Инстр (1, тСтринг, “1”)> 0 Тада
вб.Ворксхеетс (1) .Ранге (“А” & р) .Валуе = тСтринг
р = р+1
Крај Ако

Ова ИФ функција проверава да ли текст у тСтринг -у садржи број 1. Ако је тачно, онда копира садржај тСтринг -а у следећи доступан ред у радној свесци. „Р“ је прво имало вредност 3. Користећи р = р+1, повећавамо га за 1, тако да се следећи унос може поставити испод претходног.

Нект п
.Близу

Тхе Нект п ред повећања кода за следећи пасус.

.Близу затвара документ када се поради на свим пасусима. Ово је излаз који добијамо у екцел датотеци -

Видећете да су само они одломци који садрже број 1 било где у броју укључени у излаз.

врдАпп.Куит
Сет врдДоц = Ништа
Подесите врдАпп = Ништа
вб.Савед = Тачно

врдАпп.Куит ће затворити реч Апплицатион. Сет врдДоц = Ништа и Сет врдАпп = Ништа неће ослободити меморију коју заузимају ове 2 променљиве објекта и поставити их на Ништа. вб.Савед = Труе ће сачувати радну свеску.

Помоћу горњег кода можемо контролисати које податке треба копирати из Ворд датотеке у Екцел датотеку.