Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Struktura katalogów (lista plików i folderów do max. stopnia zagłębienia)

woodsman72 20 Lis 2017 22:16 945 3
  • #1 20 Lis 2017 22:16
    woodsman72
    Poziom 2  

    Witam bardziej zaawansowanych w dziedzinie VBA... czyli wszystkich
    Przeszukałem już prawie ćwiartkę internetów i nie dokopałem się do rozwiązania pewnego problemu. Potrzebuję stworzyć makro, które "spenetruje" mi podaną lokalizację i określi najwyższy stopień zagłębienia (wg poniższego schematu)
    Struktura katalogów (lista plików i folderów do max. stopnia zagłębienia)
    W tym przykładzie stopień "zagnieżdżenia" wynosi 3. Następnie skrypt powinien wylistować całą strukturę wraz ze znajdującymi się tam plikami. Pozostałe czynności, czyli pobieranie danych z plików, umieszczanie ich w pliku zbiorczym, generowanie raportu zbiorczego, a następnie usuwanie części plików to już opanowałem. Problemem jest fakt, że struktura ta jest dosyć dynamiczna (pojawiają się nowe katalogi na różnych poziomach zagłębienia) dlatego też nie da się wykorzystać makra które "na sztywno" będzie pobierało dane. Chodzi głównie o to aby co jakiś czas pewne pliki i katalogi były usuwane, a niestety katalogi można wyciachać gdy nie zawierają podkatalogów lub plików. Ponieważ jednak niektóre dane umieszczane są w nowo powstałych jeszcze bardziej "zakopanych" lokalizacjach to skrypt mi się wywalał. Przykładowo poziom 3 zagnieżdżenia zawierał katalog "projekt 2663" to już katalog z plikami danych skorygowanych zagnieżdżał się wewnątrz czyli na poziomie 4....
    Próbowałem stosować listowanie, pętle, zgubną rekurencję i wszystko do bańki
    Czy ktoś mógłby wspomóc kodem lub chociażby jakimś przejrzystym algorytmem, który pomógłby mi to ogarnąć?

    0 3
  • Pomocny post
    #2 21 Lis 2017 00:19
    adamas_nt
    Moderator Programowanie

    Wypróbuj takie coś:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Przykład dla 3 (a może 4) poziomów. Dopisując kolejne pętle dogrzebiesz się do "samego dna".

    0
  • #3 21 Lis 2017 21:05
    woodsman72
    Poziom 2  

    Serdeczne dzięki takie rozwiązanie dużo mi rozjaśnia, ale... nie załatwia problemu. Choć przyznaję, że kilkanaście godzin temu trafiłem na kapitalne (przynajmniej do moich potrzeb) rozwiązanie - automat na bazie pętli rekurencyjnej który robi zadaną robotę niezależnie od ilości stopnia zagnieżdżenia. No i uczciwie przyznaję - na moim dość jeszcze mizernym stopniu zaawansowania rozwiązanie zaproponowane przez adamas_nt jest dla mnie zrozumiałe i do ogarnięcia. Dzięki wielkie.
    P.S.
    Ten kawałek kodu który samodzielnie odszukałem jest łatwy do przerobienia tak aby wykorzystać do zrobienia komuś na dysku niezłego bałaganu..... więc go nie publikuję... no chyba że ktoś bardzo potrzebuje to puk puk pukać na priva.

    0
  • #4 21 Lis 2017 21:57
    clubs
    Poziom 30  

    Witam
    Kiedyś używałem tego "leci po wszystkim"

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    1