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.

[Excel] pobieranie danych z innych plików

Borysek13 09 Lis 2011 21:47 3248 4
  • #1 09 Lis 2011 21:47
    Borysek13
    Poziom 2  

    Witam,
    ponieważ od jakiegoś czasu męczę się ze zbieraniem i kopiowaniem danych z dużej ilości plików w excelu, szukam pomocy aby to zautomatyzować. Kombinowałem z formułami, ale domyślam się, że dużo łatwiej będzie zrobić makro-wiem że taki problem już się przewijał , niestety jestem zupełnie zielony w tym temacie i nie potrafię tego przerobić na swoję potrzeby, więc proszę o pomoc.

    Chciałbym, aby makro pobierało dane z wszystkich plików excel (zamkniętych) znajdujących się na danej sieżce na dysku( także z podkatalogów, jeśli się da). Dane do skopiowania znajdują się w kolumnie B w wierszach od 1 do 23 i mają zostać skopiowane i zebrane w jednym nowym pliku.

    0 4
  • #2 09 Lis 2011 21:54
    ducker1
    Poziom 24  

    Otwórz plik źródłowy i plik docelowy, w źródłowym zaznacz określoną komórkę i kliknij kopiuj, w docelowym natomiast wybierz komórkę docelową i kliknij prawym i wybierz "wklej łańcuch" (tłumaczone z duńskiego, w polskim może byś trochę inaczej)

    Pozdrawiam

    0
  • Pomocny post
    #3 10 Lis 2011 07:14
    adamas_nt
    Moderator Programowanie

    Był ostatnio temat Link, w którym maglowanych było kilka rozwiązań. Kod jest logiczny i łatwy do zaadoptowania. Fakt, nie ma tam nic o podfolderach.

    Do pierwszego poziomu można "dobrać się" Np w ten sposób

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Aby przejść głębiej w strukturę, należałoby zadeklarować kolejną zmienną obiektową (FSO) i wewnątrz pętli For zagnieździć kolejną pętlę.

    0
  • #4 13 Lis 2011 21:01
    Borysek13
    Poziom 2  

    Tak jak pisałem jestem zupełnie zielony w makrach.
    problem podfolderów mogę załatwić przekopiowaniem wszystkiego ręcznie do jednego katalogu
    ale co muszę dopisać do makra aby mi kopiowało komórki B1 do B23 z każdego pliku i zebrało to w jednym arkuszu po kolei w kolumnach?

    0
  • #5 14 Lis 2011 10:19
    adamas_nt
    Moderator Programowanie

    Otwierasz kolejne pliki w pętli, w której należy umieścić licznik numeru kolumny arkusza docelowego. Jeśli znasz nazwę lub indeks arkusza źródłowego (idealnie byłoby, żeby był identyczny w każdym pliku), to przepisujesz zakres, zamykasz plik i... to wszystko. Ewentualnie powtarzasz tę samą operację dla podfolderów, o czym pisałem wyżej.
    Jeśli nazwy lub indeksy w plikach źródłowych są różne, czeka Cię trochę zabiegów z wyszukiwaniem po nagłówkach, kluczowych wartościach, lub t.p.
    Ale o szczegółach, strukturach, organizacji w plikach wiesz tylko Ty, a my możemy palcem pokazać co może, a nie musi w Twoim przypadku zadziałać...

    Moja rada:
    Włącz rejestrator makr i nagraj sobie kopiowanie zakresu z jednego pliku, łącznie z jego otwieraniem i zamykaniem. Wyłącz rejestrator i prześledź kolejne kroki. Takie makro jest nadmiarowe i zwykle wymaga dopieszczenia, ale tym się nie przejmuj. To Twoje makro, więc szybko zrozumiesz o co chodzi. Porównaj nagrany kod z jakimś "zapętlonym" przykładem, a kolor Twojego pojęcia o VBA zmieni się z zielonego na bardziej ciepły.

    Póki co... Na pytanie

    Borysek13 napisał:
    ale co muszę dopisać do makra aby mi kopiowało komórki B1 do B23 z każdego pliku i zebrało to w jednym arkuszu po kolei w kolumnach?
    odpowiedź brzmi: Range("B1:B23")...

    0