ВБА ГетОбјецт - Како се користи функција ГетОбјецт у програму Екцел ВБА?

Екцел ВБА ГЕТОБЈЕЦТ функција

Можемо користити функцију ГетОбјецт у ВБА у МС Екцелу за приступ АцтивеКс објекту из екцел датотеке, а затим доделити објекат променљивој објекта. Да бисмо користили ОЛЕ (Објецт Линкинг анд Ембеддинг) или ЦОМ (Цомпоунд Објецт Модуле) технологију за контролу било које Мицрософт апликације као што су МС Ворд, МС Оутлоок, МС ПоверПоинт и Интернет Екплорер, итд., Можемо да користимо функцију ВБА ГЕТОБЈЕЦТ.

За креирање објекта користимо функцију ЦреатеОбјецт, а функција ГЕТОБЈЕЦТ враћа референцу на објекат.

Синтакса за функцију ГЕТОБЈЕЦТ

Функција ГЕТ ОБЈЕЦТ има ове именоване аргументе:

  1. Назив путање : Морамо да наведемо пуну путању и име датотеке која садржи објекат за преузимање. Ово је опционални аргумент, у ствари, оба аргумента у функцији ГетОбјецт нису обавезна, али ако је „патхнаме“ изостављен, потребан је други аргумент „цласс“.
  2. Класа : Ово је такође опционални аргумент како је раније наведено. Ово прихвата низ који представља класу објекта.

Користимо синтаксу 'аппнаме.објецттипе' да одредимо аргумент 'цласс'.

  1. Име апликације: Морамо да наведемо име апликације, које ће пружити објекат.
  2. Тип објекта: Наводимо тип класе објекта који ћемо створити.

Пример функције Екцел ВБА ГЕТОБЈЕЦТ

Претпоставимо да имамо ворд документ који садржи 3 табеле.

Желимо да напишемо ВБА код који ће увести све табеле у документу на екцел лист. Да бисмо учинили исто, мораћемо да користимо функције ЦреатеОбјецт и ГетОбјецт у ВБА.

Кораци би били:

  • Направите екцел датотеку и сачувајте датотеку са екстензијом .клсм екцел (Екцел Мацро-Енаблед Воркбоок) јер ћемо морати да покренемо ВБА код (макро).
  • Отворите основни визуелни уређивач помоћу тастерске пречице (Алт + Ф11) или помоћу команде „Висуал Басиц“ у групи „Цоде“ на картици „Девелопер“ у Екцелу.
  • Двапут кликните на „ТхисВоркбоок“ на левој страни ВБА уређивача и одаберите „Воркбоок“ са листе која ће се приказати након тога на врху екрана.
  • Изаберите „Отвори“ са листе.
  • Сада треба да напишемо код између ове две линије.
  • Прво ћемо прогласити променљиве за држање објеката (МС Ворд Доцумент и МС Ворд Апплицатион објект) и „Стринг Вариабле“ да бисмо задржали име документа одакле треба да издвојимо табеле.
  • За руковање грешкама додаћемо једну изјаву. Ова изјава говори програму ВБА да игнорише грешку и настави извршавање са следећим редом кода. Израз „На грешци наставља се даље“ не поправља грешке при извршавању, већ једноставно значи да ће се извршавање програма наставити из реда који прати линију која је узроковала грешку.
  • Сада ћемо користити функцију ГетОбјецт да бисмо добили приступ тренутној инстанци Ворд Апплицатион Објецт-а.
  • Ако у случају да не постоји тренутна инстанца апликације МС Ворд или АцтивеКс компонента не може да креира објекат или да врати референцу на овај објекат, онда грешка 429. За ово ћемо додати испод две линије у коду. Након обраде грешке, треба да креирамо инстанцу објекта МС Ворд Апплицатион помоћу функције ЦреатеОбјецт .
  • Да би апликација МС Ворд постала видљива, променићемо видљиво својство објекта 'ВдАпп' у ТРУЕ .
  • Морамо наћи локацију и име фајла документа речи из којих желите да увезете табеле у Екцел-лист и доделити исти за "стрДоцНаме" Да бисте пронашли име и локацију, а можемо провјерити на својства од датотека.

Да бисте отворили дијалог „Својства“ , само изаберите датотеку и притисните „Алт + Ентер“.

  • Ако датотека не постоји на наведеном месту, тада ће се вратити порука која каже: „Детаљи датотеке ознака нису пронађени у путањи до фасцикле.“ Наслов би био „Жао нам је, то име документа не постоји“.
  • Сада морамо да активирамо МС Ворд апликацију и доделимо променљиву 'вддоц' са документом речи који има име датотеке сачувано у 'стрДоцНаме.'
  • Ако датотека већ није отворена, треба да отворимо документ и активирамо апликацију.
  • Након активирања ворд документа, морамо приступити табелама у документу. Да бисмо учинили исто, створићемо неке променљиве.

Тбле је целобројна променљива која ће сместити број табела у документ.

ровВд је дугачка променљива која ће сачувати број редова у одређеној табели.

цолВд је дугачка променљива која ће сачувати број колона у одређеној табели.

  • Морамо да избројимо број табела у документу, а ако у њему постоји нешто значајно, тада ћемо кориснику приказати поље са поруком „Ниједна табела није пронађена у Ворд документу“.
  • Да бисмо приступили табелама у документу и записали садржај у екцел листу, покренућемо В фор петљу „Фор“ неколико пута у табелама, а унутар ове ВБА петље покрећемо угнежђене петље „фор“ за приступ сваком реду и свака колона у реду.
  • Како не желимо да сачувамо документ и напустимо апликацију. Такође би требало да ослободимо меморију система. Да бисмо учинили исто, написаћемо следећи код.

Сада, кад год отворимо екцел датотеку, попуна се ажурира садржајем табеле из ворд документа.

Шифра:

Привате Суб Воркбоок_Опен () Рем Декларисање променљивих објекта за приступ објекту креираном помоћу ГЕТОБЈЕЦТ Дим ВдАпп као објекта, вддоц Као објекта Рем Декларисање променљиве низа за приступ Ворд документу Дим стрДоцНаме као низ Рем руковање грешкама На грешци Настави Следећи Рем Активација МС Ворд-а ако је је већ отворено Постави ВдАпп = ГетОбјецт (, "Ворд.Апплицатион") Ако је Ерр.Нумбер = 429 Тада је Ерр.Цлеар Рем Стварање објекта апликације Ворд ако МС Ворд већ није отворен Сет ВдАпп = ЦреатеОбјецт ("Ворд.Апплицатион") Крај Иф ВдАпп.Висибле = Труе стрДоцНаме = "Ц: Усерс ЦБА7_01 Десктоп Маркс Детаилс.доцк" Рем Провера релевантног директоријума за одговарајући документ Рем Ако није пронађен, обавестите корисника и затворите програм Иф Дир (стрДоцНаме) = " "Затим МсгБок" Датотека "& стрДоцНаме & вбЦрЛф &"није пронађен у путањи директоријума "& вбЦрЛф &" Ц: Усерс ЦБА7_01 . ", _вбЕкцламатион," Жао нам је, то име документа не постоји. "Изађи из поткрај Ако је ВдАпп.Ацтивате Сет вддоц = ВдАпп.Доцументс (стрДоцНаме ) Ако вддоц није ништа, онда подесите вддоц = ВдАпп.Доцументс.Опен ("Ц: Усерс ЦБА7_01 Десктоп Маркс Детаилс.доцк") вддоц.Ацтивате Рем Дефининг променљиве за приступ табелама у ворд документу Дим Тбле Ас Интегер Дим ровВд Лонг Лонг дим ЦолВд Ас Интегер Дим к Ас Лонг, и Ас Лонг к = 1 и = 1 Са вддоц Тбле = вддоц.Таблес.Цоунт Иф Тбле = 0 Тада МсгБок "Ниједна табела није пронађена у Ворд документу", вбЕкцламатион, "Не Табеле за увоз „Изађи из поткрај ако је Рем Покретање процеса петље за приступ табелама и њиховим редовима, колоне За и = 1 За трпетање. Табеле (и) За ровВд = 1 За .Ровс.Цоунт за цолВд = 1 За .Колоне.Бројање ћелија (к, и) = ВорксхеетФунцтион.Цлеан (.целл (ровВд, цолВд) .Ранге.Тект) Рем Приступ следећој колони и = и + 1 Следећи цолВд Рем Прелазак у следећи ред и почетак од колоне 1 и = 1 к = к + 1 Следећи редВд Енд Витх Нект Енд Витх Рем не треба да сачувамо ворд документ вддоц.Цлосе Савецхангес: = Фалсе Рем напуштамо МС Ворд апликацију ВдАпп.Куит Рем Напокон ослобађамо системску меморију додељену за 2 објектне променљиве Сет вддоц = Ништа није постављено ВдАпп = Ништа Крај СубКуит Рем Напокон ослобађамо системску меморију додељену за 2 променљиве објекта Сет вддоц = Ништа није постављено ВдАпп = Ништа Крај СубКуит Рем Напокон ослобађамо системску меморију додељену за 2 променљиве објекта Сет вддоц = Ништа није постављено ВдАпп = Ништа Крај Суб

Ствари које треба запамтити

  1. Постоји неки појединачни објект, за који се генерише само једна инстанца објекта, без обзира на број за који се покреће ЦреатеОбјецт. Функција ГетОбјецт у сваком тренутку враћа исту инстанцу када је позвана са низом нулте дужине, а долази до грешке ако аргумент 'патхнаме' није споменут.
  2. Не можемо да користимо ГетОбјецт за приступ референци на класу створену помоћу ВБА.
  3. Ако у случају да не постоји активна инстанца апликације МС Ворд или не желимо да је објекат покренут датотеком која је већ учитана, прво користимо функцију ЦреатеОбјецт за креирање објекта, а затим помоћу функције ГетОбјецт за приступ објекту .

Занимљиви Чланци...