Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla 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

25 Lut 2017 21:28 942 10
  • 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
    .
  • 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).
  • 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
  • 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 ;)
  • 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
  • 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
  • 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
  • Pomocny post
    Moderator Programowanie
    Zmienna 'tblArkusze' jest tablicą przecież. Musisz w pętli
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
  • 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.
  • Pomocny post
    Poziom 34  
    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
  • 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