Поделите сваки Екцел лист у засебне датотеке (корак по корак)

Погледајте видео - Како поделити сваки Екцел лист у засебне датотеке

Ако имате Екцел радну свеску са много радних листова, не постоји једноставан начин да сваки од ових листова поделите у засебне Екцел датотеке и сачувате одвојено.

То би могло бити потребно када израђујете листове за различите мјесеце или регије или производе/клијенте и желите брзо набавити засебну радну књигу за сваки лист (као Екцел датотеку или као ПДФ).

Иако постоји ручни начин за раздвајање листова у засебне радне свеске, а затим их сачувајте, то је неефикасно и склоно грешкама.

У овом водичу ћу вам дати једноставан ВБА код који можете користити за брзо (за неколико секунди) раздвајање свих радних листова у њихове засебне датотеке, а затим их сачувајте у било којој наведеној фасцикли.

Поделите сваки радни лист у засебну Екцел датотеку

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

Да бисте ове листове поделили у засебну Екцел датотеку, можете користити доњи ВБА код:

'Код који је направио Сумит Бансал са трумпекцел.цом Суб СплитЕацхВорксхеет () Дим ФПатх Ас Стринг ФПатх = Апплицатион.АцтивеВоркбоок.Патх Апплицатион.СцреенУпдатинг = Фалсе Апплицатион.ДисплаиАлертс = Фалсе За сваки вс у ТхисВоркбоок.Схеетс вс.Цопи Апплицатион.АцтивеВоркбоок.СавеА Назив датотеке: = ФПатх & "\" & вс.Наме & ".клск" Апплицатион.АцтивеВоркбоок.Цлосе Фалсе Нект Апплицатион.ДисплаиАлертс = Труе Апплицатион.СцреенУпдатинг = Труе Енд Суб

Пре употребе горњег ВБА кода морате да се уверите у неколико ствари:

  1. Направите фасциклу у коју желите да добијете све резултирајуће датотеке.
  2. Сачувајте главну Екцел датотеку (која садржи све радне листове које желите као засебне датотеке) у ову фасциклу.

Када ово учините, можете ставити горњи ВБА код у датотеку и покренути га.

Горњи код је написан на начин да преузима локацију фасцикле користећи путању датотеке (у којој се код покреће). Због тога је важно прво сачувати датотеку у фасцикли, а затим користити овај код.

Како функционише ВБА код - Горњи код користи једноставну петљу Фор Нект која пролази кроз сваки радни лист, ствара копију радног листа у Екцел радној свесци, а затим чува ову Екцел радну свеску у наведеној фасцикли (која је иста која има главну датотеку са свим листова).

Испод су кораци за постављање овог ВБА кода у радну свеску програма Екцел (они ће бити исти за све остале методе приказане у овом водичу):

Где ставити овај код?

Испод су кораци за постављање кода у уређивач Висуал Басиц -а где се може извршити:

  • Кликните на картицу Девелопер.
  • У групи Код кликните на опцију Висуал Басиц. Ово ће отворити ВБ Едитор. [Такође можете користити пречицу на тастатури - АЛТ + Ф11]
  • У ВБ Едитор-у кликните десним тастером миша на било који објекат радне свеске на којој радите.
  • Задржите показивач изнад опције Уметање
  • Кликните на Модул. Ово ће уметнути нови модул
  • Двапут кликните на објект Модул. ово ће отворити прозор кода за модул
  • Копирајте горе наведени ВБА код и залепите га у прозор кода модула.
  • Изаберите било који ред у коду и кликните на зелено дугме за репродукцију на траци са алаткама да бисте покренули ВБА макро код.

Горе наведени кораци би тренутно раздвојили радне листове у засебне Екцел датотеке и сачували их. Потребна је само секунда ако имате мањи број радних листова. У случају да имате много, може потрајати неко време.

Назив сваке сачуване датотеке је исти као и назив листа који је имао у главној датотеци.

Пошто сте ВБА код поставили у радну свеску програма Екцел, потребно је да га сачувате у .КСЛСМ формату (који је формат са омогућеним макроима). Ово ће осигурати да је макро сачуван и да ради када следећи пут отворите ову датотеку.

Имајте на уму да сам користио линије Апплицатион.СцреенУпдатинг = Нетачно и Апплицатион.ДисплаиАлертс = Нетачно у коду тако да се све дешава у позадини и да не видите ствари које се дешавају на вашем екрану. Када се код покрене и подели листове и сачува их, враћамо их назад на ТРУЕ.

Као најбоља пракса, препоручује се стварање резервне копије главне датотеке (која садржи листове које желите поделити). Ово ће осигурати да не изгубите своје податке у случају да нешто пође по злу или ако Екцел одлучи да успори или падне.

Поделите сваки радни лист и сачувајте као засебне ПДФ -ове

У случају да желите да поделите радне листове и сачувате их као ПДФ датотеке уместо Екцел датотека, можете користити доњи код:

'Код који је направио Сумит Бансал из трумпекцел.цом Суб СплитЕацхВорксхеет () Дим ФПатх Ас Стринг ФПатх = Апплицатион.АцтивеВоркбоок.Патх Апплицатион.СцреенУпдатинг = Фалсе Апплицатион.ДисплаиАлертс = Фалсе За сваки вс у ТхисВоркбоок.Схеетс вс.Цопи Апплицатион.АцтивеСхеет.Екпорт Тип: = клТипеПДФ, Назив датотеке: = ФПатх & "\" & вс.Наме & ".клск" Апплицатион.АцтивеВоркбоок.Цлосе Фалсе Нект Апплицатион.ДисплаиАлертс = Труе Апплицатион.СцреенУпдатинг = Труе Енд Суб

Ствари у које морате бити сигурни пре коришћења овог кода:

  1. Направите фасциклу у коју желите да добијете све резултирајуће датотеке.
  2. Сачувајте главну Екцел датотеку (која садржи све радне листове које желите као засебне датотеке) у ову фасциклу.

Горњи код је поделио сваки лист у Екцел датотеци и сачувао га као ПДФ у истој фасцикли у којој сте сачували главну Екцел датотеку.

Поделите само оне радне листове који садрже реч/израз у засебне Екцел датотеке

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

На пример, претпоставимо да имате Екцел датотеку у којој имате податке за више година, а сваки лист у датотеци има број године као префикс. Нешто као што је приказано испод:

Рецимо сада да желите да поделите све листове за период 2021-2022 и сачувате их као засебне Екцел датотеке. Да бисте то урадили, морате некако проверити назив сваког радног листа и само оне листове који имају број 2021-2022 треба поделити и сачувати, а остале оставити нетакнутима.

Ово се може урадити помоћу следећег ВБА макро кода:

'Код који је направио Сумит Бансал са трумпекцел.цом Суб СплитЕацхВорксхеет () Дим ФПатх Ас Стринг Дим ТектТоФинд Ас Стринг ТекттоФинд = "2020" ФПатх = Апплицатион.АцтивеВоркбоок.Патх Апплицатион.СцреенУпдатинг = Фалсе Апплицатион.ДисплаиАлертс = Фалсе За сваки вс у овој књизи. Табеле Иф ИнСтр (1, вс.Наме, ТекттоФинд, вбБинариЦомпаре) 0 Затим вс.Цопи Апплицатион.АцтивеВоркбоок.СавеАс Назив датотеке: = ФПатх & "\" & вс.Наме & ".клск" Апплицатион.АцтивеВоркбоок.Цлосе Фалсе Енд Иф Нект Апплицатион.ДисплаиАлертс = Истинска апликација.СцреенУпдатинг = Истинита крајња подмена

У горњем коду сам користио променљиву ТекттоФинд, која је у почетку додељена „2020“.

ВБА код затим користи петљу Фор Нект у ВБА -и да прође кроз сваки радни лист, а затим провери назив сваког ИНСТР функције сваког радног листа. Ова функција проверава да ли назив радног листа садржи реч 2021-2022 или не. Ако то учини, вратиће број позиције на којој налази овај текст (што је у овом случају 2021-2022).

А ако не пронађе текст који тражимо, враћа 0.

Ово се користи са условом ИФ Тхен. Дакле, ако име листа има текстуални низ 2021-2022 у себи, оно ће бити подељено и сачувано као посебна датотека. А ако нема овај текстуални низ, услов ИФ не би био испуњен и ништа се не би догодило.

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

wave wave wave wave wave