ВБА комбинује више Екцел датотека у једну радну свеску

Овај водич ће вам показати како да комбинујете више Екцел датотека у једну радну свеску у ВБА

Креирање једне радне свеске из више радних свески помоћу ВБА захтева низ корака које треба следити.

  • Морате да изаберете радне свеске из којих желите изворне податке - изворне датотеке.
  • Морате да изаберете или креирате радну свеску у коју желите да унесете податке - датотеку одредишта.
  • Морате изабрати листове из изворних датотека које су вам потребне.
  • Морате рећи коду где сместити податке у датотеку одредишта.

Комбиновање свих листова из свих отворених радних свески у нову радну свеску као појединачних листова

У доњем коду датотеке из којих морате копирати податке морају бити отворене јер ће Екцел проћи кроз отворене датотеке и копирати податке у нову радну свеску. Код се налази у личној радној свесци макроа.

Ове датотеке су ЈЕДИНЕ Екцел датотеке које треба отворити.

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

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

Ваша комбинована датотека ће се сада приказати.

Овај код је прошао кроз сваку датотеку и копирао лист у нову датотеку. Ако било која од ваших датотека има више од једног листа - копираће и њих - укључујући и листове на којима нема ничега!

Комбиновање свих листова из свих отворених радних свески у један радни лист у новој радној свесци

Доња процедура комбинује информације са свих листова у свим отвореним радним свескама у један радни лист у новој радној свесци која се креира.

Подаци са сваког листа се залепе у одредишни лист у последњем заузетом реду на радном листу.

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

Комбиновање свих листова из свих отворених радних свески у један радни лист у активној радној свесци

Ако желите да унесете информације из свих других отворених радних свески у ону у којој тренутно радите, можете користити овај код у наставку.

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

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave