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.

VBA Excel - Otwieranie, aktualizacja i zamykanie dużej ilości plików xls

VVMax 09 Lis 2016 10:57 1368 3
  • #1 09 Lis 2016 10:57
    VVMax
    Poziom 2  

    Witam,

    Mam następujący problem. Co miesiąc muszę dokonać aktualizacji pliku xls, zawierającego odniesienia do ponad setki plików źródłowych w katalogach (adresy "C:\..."). Przygotowałem plik Main.xlsx, w którym w kolumnie A mam listę z tymi adresami do plików źródłowych, natomiast w kolejnych kilku kolumnach formuły, które wyszukują odpowiednie dane w tych plikach. Aby plik Main.xlsx się zaktualizował, muszę te pliki ręcznie otworzyć. Jest to czasochłonne i często generuje błędy (gdy o jakimś pliku zapomnę...).

    Postanowiłem przygotować makro, które będzie otwierało kolejno każdy plik (na podstawie lokalizacji w kolumnie A), następnie formuły w pliku Main.xlsx odnoszące się do tego konkretnego pliku będą aktualizowały dane, plik źródłowy byłby zamykany. Makro powtarzałoby proces dla kolejnego adresu w kolumnie A.

    Pierwszy kod, jaki zastosowałem wygląda tak:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    Problem w tym, że po uruchomieniu tego makra dane się w ogóle nie aktualizują - w ich miejscu pozostaje #REF!. Tak jakby pliki w ogóle się nie otwierały.

    Zastosowałem więc inne znalezione w sieci makro:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    To makro otwiera pliki źródłowe i dane się aktualizują. Niestety nie zamyka pliku źródłowego po otwarciu, a ponieważ wiele plików w różnych katalogach ma takie same nazwy (nie mogę ich zmienić), to gdy tylko dojdzie do próby otwarcia pliku z nazwą, która już się pojawiła w innym pliku, makro się zatrzymuje. W efekcie jestem w stanie w ten sposób obsłużyć tylko kilka plików źródłowych.

    Czy mógłbym prosić o pomoc w rozwiązaniu tego problemu?

    Z góry dziękuję :)

    0 3
  • Pomocny post
    #2 09 Lis 2016 16:08
    JRV
    Specjalista - VBA, Excel

    a tak?

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #4 17 Lis 2016 16:04
    VVMax
    Poziom 2  

    Wybaczcie, że długo nie odpisywałem...

    @Prot
    sq miało pić do zakresu komórek, w których były wpisane adresy plików. Tak czy siak, zrezygnowałem z tego kodu i wróciłem do pierwszego...

    @JRV
    Dzięki! Musiałem jednak rozpisać ten kod. Okazało się, że po otwarciu jednego pliku, excel aktualizował formułę odnoszącą się do tego pliku, ale równocześnie formuły referujące do innych (już zamkniętych) plików zerowały się (tzn. wyskakiwał #REF).
    Aby sobie z tym poradzić, napisałem kod, który po otworzeniu pliku i aktualizacji formuły (w kol.B), kopiuje jej wynik do siąsiedniej komórki (kol.C). Kod wygląda jak poniżej:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Dzięki!
    Pozdrawiam

    0