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