Бројање радних листова у више датотека

Anonim

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

У овом чланку ћемо научити како бројати радне листове у више датотека са ВБА кодом.

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

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

Ако желите да прочитате оригинално питање, кликните овде

Следи снимак датотека сачуваних у фасцикли са екстензијом .клск

Напомена: Не постоје датотеке заштићене лозинком.

Да бисмо добили код, морамо да следимо кораке у наставку за покретање ВБ уређивача:

  • Кликните на картицу Девелопер
  • Из групе кодова изаберите Висуал Басиц

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

  • Док покрећемо макро, добићемо број радних листова. Погледајте доњи снимак:

Напомена: горњи макро ће радити за .клск & .клс проширење, а не за .клсм проширење са омогућеним макроима.

  • Све горе наведене датотеке су .клск екстензија
  • Додајмо лажни Екцел лист, тј. Лист 10
  • У случају да имамо датотеку са истим именом са екстензијама .клск и .клс, тада морамо да наведемо назив датотеке са припадајућим екстензијама у нашој тестној датотеци (колона А) како би макро могао идентификовати датотеку која смо упућујући на и дајте нам тачан резултат
  • Ако нисмо споменули или смо пропустили да споменемо екстензију за датотеку са истим именом, тада ће нам макро дати број екстензије .клск. Погледајте доњи снимак:

  • Да бисмо добили број листова за Лист 10 са екстензијама .клск и .клс, морамо да споменемо назив датотеке са припадајућим наставцима.

Снимак коначног резултата приказан је испод:

Закључак: Користећи горњи макро код можемо избројати број радних листова у више датотека, а ако је потребно да бисмо добили прилагођени резултат, можемо учинити мало модификација у ВБА коду.

Ако вам се допадају наши блогови, поделите их са пријатељима на Фацебооку. Такође нас можете пратити на Твиттер -у и Фацебоок -у.
Волели бисмо да чујемо од вас, реците нам како можемо побољшати, допунити или иновирати наш рад и учинити га бољим за вас. Пишите нам на веб локацији е -поште