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.

makro VBA w excelu - pobieranie i segregacja danych wg wytycznych

jjfrantz 10 Cze 2012 22:00 2312 1
  • #1 10 Cze 2012 22:00
    jjfrantz
    Poziom 1  

    Witam.

    Przeszukałem już wiele postów, ale nie znalazłem odpowiedzi na pytanie. A mianowicie mam następujący problem - chcę stworzyć bazę wypożyczanych i oddawanych elementów, w pliku bazowym Excela mam bazę elementów, są one opatrzone nazwą i numerem katalogowym (ponad 3000 elementów), otrzymuję WZ i PZ w formie pliku csv po każdym wydaniu lub zdaniu.

    Plan jest taki, że ręcznie wrzucam pliki CSV do poszczególnych folderów, tj. pliki PZ do folderu PZ i analogicznie dla WZ. Makro miałoby automatycznie, po uruchomieniu wczytywać wybrane dane we właściwe miejsca. Miałoby to wyglądać w sposób następujący: całość ma się odbywać na poziomie trzech plików xls, głównego, który zaprezentuje końcowe zestawienie i dwóch plików xls do których wczytywane będą WZ dla pierwszego i PZ dla drugiego, no więc krok po kroku co ma się dziać.

    Uruchamiam makro, a ono:
    1. z poziomu pliku WZ.xls, sprawdza, czy w folderze WZ znajdują się nowe pliki csv(wcześniej nie wczytane, aby uniknąć dublowania), jeśli są, z każdego z osobna kopiuje 5 i 7 kolumnę (zawiera nr kat i liczbę elementów), każdorazowo zakładając nowy arkusz, któremu nadaje nazwę odczytaną z komórki A2 danego csv i ma to wstawić w kolumnę A i B, dodatkowo z A2 i B2 (csv) ma skopiować dane i wstawić odpowiednio w C1 i D1 w tym samym arkuszu i kontynuuje aż sprawdzi wszystkie.

    Dla każdego nowo stworzonego arkusza, po wstawieniu danych robi tabelę przestawną, z zakresu kolumn A i B i wstawia w tym samym arkuszu.
    Może na chwilę obecną na tym zakończmy, bo dalsze kroki są jeszcze bardziej skomplikowane, a może z resztą dam już sobie radę, z tym próbowałem na wiele sposobów, ostatecznie udało mi się wczytać całość pliku za pomocą pobierania danych zewnętrznych (tworzenie linków), ale zakłada mi tylko jeden arkusz i nie nadaje mu nazwy a w dodatku przy ponownym wczytaniu danych z folderu dubluje pliki, poniżej kod:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0 1
  • #2 11 Cze 2012 16:52
    adamas_nt
    Moderator Programowanie

    Plik csv można "klasycznie" otworzyć w Excelu poleceniem 'Workbooks.Open', skopiować potrzebne dane i zamknąć.

    Jeśli nazwy arkuszy w plikach WZ.xls oraz PZ.xls są pobierane z A2 odpowiednich dokumentów (csv), to można w pętli otwierać je kolejno, sprawdzać czy istnieje arkusz o nazwie=A2 i jeśli nie...

    Postąpiłbym wg następującej kolejność:
    1. Z głównego pliku otwieram WZ.xls
    2. Porównuję wartość z A2 kolejnych plików znajdujących się w określonej lokalizacji (można bez ich otwierania) z nazwami arkuszy skoroszytu WZ.xls (pętla, Dir, przykładów aż się roi). Jeśli nie znajdę, otwieram, dodaję nowy arkusz (w WZ.xls oczywiście), kopiuję kolumny wg schematu i zamykam csv.
    3. Tu tworzenie tabeli przestawnej (można nagrać i dostosować).
    4. Na tę chwilę nie wiadomo ;)

    Analogicznie dla PZ.xls

    0