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

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

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

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

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

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

  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 променљиве објекта Сет вддоц = Ништа није постављено ВдАпп = Ништа Крај Суб 

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

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