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 kopiujące dane do kolejnych arkuszy

zbysiomysio 25 Lut 2017 21:28 690 10
  • #1 25 Lut 2017 21:28
    zbysiomysio
    Poziom 6  

    Mam makro, które kopiuje ze wskazanego pliku kolumny A:N i wkleja do odkrywanego arkusza w pliku z makrem. Takich plików, z których są kopiowane kolumny może być do 9 (może być mniej). Arkusze do których są kopiowane kolumny mają nazwy 'I L", "II L" itd do "IX L". Jak zrobić, żebym nie musiał każdorazowo uruchamiać makra do każdego pliku. Chodzi mi o to, żeby po zaznaczeniu kilku plików (z których mają być kopiowane kolumny), makro wpierw wyczyściło wszystkie arkusze ("I L" do "IX L"), następnie jeżeli to możliwe wg alfabetycznej nazwy plików otwierało by mi pierwszy plik, odkrywało arkusz "I L" i kopiowało kolumny A:N, później przy drugim pliku ta sama procedura z "II L" itd..Następnie we wszystkich odkrytych arkuszach (od 'I L" do ostatniego odkrytego) byłaby wykonana procedura, która jest w moim makrze i odbywa się po zamknięciu kopiowanego pliku. Poniżej przykładowy kod dla pierwszego pliku kopiowanego do arkusza "I L"

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    .

    0 10
  • #2 25 Lut 2017 21:48
    adamas_nt
    Moderator Programowanie

    Nie analizowałem całości makra, ale nawiązując do tematu związanego z sortowaniem przy FileDialog.AllowMultiSelect=True, wyglądałoby to tak:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Gdzie do 'wkb2' przypisywane są kolejne wybrane pliki (elementy kolekcji).

    0
  • #3 25 Lut 2017 22:58
    zbysiomysio
    Poziom 6  

    Stworzyłem coś takiego, ale nie mogę sprawdzić, bo gdzie jest błąd i pokazuje się komunikat Block If without End If, ale nie potrafię znaleźć tego błędu.

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #4 25 Lut 2017 23:11
    adamas_nt
    Moderator Programowanie

    Nie zamknąłeś bloku 'With fd'. Dodaj na końcu 'End With' (lub tam, gdzie uważasz że powinien być zamknięty).

    P.S. Sam byś na to wpadł piorunem, gdybyś stosował wcięcia ;)

    0
  • #5 25 Lut 2017 23:21
    zbysiomysio
    Poziom 6  

    To też, ale brakowało też zamknięcia If. Pokazuje mi jednak błąd 438 i podświetla mi linijki kodu:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #6 25 Lut 2017 23:29
    adamas_nt
    Moderator Programowanie

    Zobacz z wcięciami

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Oznaczyłem komentarzami dlaczego 'with fd-end with' tak, a nie inaczej
    wyszło dodatkowo:
    -otwarty blok if Show = -1 (zbędne w tej postaci)
    -wyłączone odświeżanie (brak linii z przełącznikiem = True)

    Bloków nie można przeplatać. Jeśli otwierasz w jakiejś kolejności, zamykasz w odwrotnej, Np

    With Sheets(1): For i = 1 To 2: Do
    coś sie tu dzieje
    Loop: Next: End With

    0
  • #7 25 Lut 2017 23:39
    zbysiomysio
    Poziom 6  

    Dzięki. Niestety podświetla mi błąd w tych linijkach, o których napisałem powyżej. Chyba coś żle zdefiniowałem. Chodziło o to, aby przed pętlą wyczyściło wszystkie arkusze od I L do IXL i zdjęło ewentualny filtr

    0
  • Pomocny post
    #8 25 Lut 2017 23:46
    adamas_nt
    Moderator Programowanie

    Zmienna 'tblArkusze' jest tablicą przecież. Musisz w pętli

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #9 26 Lut 2017 00:11
    zbysiomysio
    Poziom 6  

    Teraz pokazuje mi błąd w tej linijce

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    Odrzuciłem na razie sprawę formuł i sprawdzania poprawności. Teraz to makro wygląda j.n.
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    Jednak pokazuje mi błąd w linijce wymienionej powyżej.Wiem, że coś jest źle, ale nie potrafię znaleźć błędu. Makro powinno kolejno odkrywać arkusze od "I L" do "IX L"i wklejać do nich kolumny A:N z otwieranych plików.

    0
  • Pomocny post
    #10 26 Lut 2017 11:48
    clubs
    Poziom 30  

    Witam

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Masz błąd bo musisz określić którego skoroszytu to dotyczy
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #11 26 Lut 2017 14:14
    zbysiomysio
    Poziom 6  

    clubs napisał:
    Witam


    Masz błąd bo musisz określić którego skoroszytu to dotyczy
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
    Dzięki. Rzeczywiście to pomogło. Dodatkowo okazało się, że musi być
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
    > Zauważyłem natomiast, że makro nie kopiuje z plików, w których jest ustawiony widok podziału stron. Jak jest ustawiony normalny widok to kopiuje. Jak można zrobić, aby przed koiowaniem makro sprawdziło jaki jest ustawiony widok i ustawiało na widok normalny przed kopiowaniem

    Dodano po 1 [godziny] 50 [minuty]:

    Wszystko jednak ok. To coś komputer wywinął figiel. Dzięki wszystkim. Zamykam temat. Sprawa rozwiązana

    0