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