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.

VBA Excel - Kopiowanie konkretnych komórek między dwoma arkuszami

22 Lip 2015 08:11 1218 10
  • Poziom 6  
    Witam,
    Chciałbym prosić o pomoc w napisaniu skryptu w VBA. Mianowicie chodzi o to, że potrzebuję zapętlonego makra, które będzie kopiowało konkretne wartości między dwoma skoroszytami (pliki dodane w załączniku). Jednocześnie nie ma określonej liczby wierszy i kolumny.
    Bardzo serdecznie proszę o pomoc.
    Pozdrawiam
    Łukasz

    P.S. Jeżeli był już taki podobny temat to przepraszam, za powtórzenie, ale szukając nie potrafiłem znaleć podobnego rozwiązania do mojego problemu.
  • Moderator Programowanie
    Rozwiązaniem, na oko, jest potrójnie zagnieżdżona pętla. Proszę o uzupełnienie:
    1. Który plik jest "bazowy", tzn w którym ma być makro?
    2. Czy w poszczególnych "blokach" mogą znaleźć się różne imiona? Inaczej: co jeśli w zakresie C3:F6 pliku źródłowego znajdzie się pusta komórka?
    3. Czy pliki mają stałą nazwę, czy znajdują się w określonym folderze (stała ścieżka)?
  • Poziom 6  
    1. Jest to drugi plik - z_którego_kopiuje.xls (26.5KB) - (niesteety nie załapały się polskie znaki)
    2. Imiona będą się powtarzały dla każdej czynności. Nie przewiduję, żeby w zakresie wystepowała pusta komórka. Jeżeli tak się stanie to chciałbym, żeby kopiowało mi do ostatniego imienia. Tzn. Jeżeli komórka C4 będzie pusta to chciałbym, żeby mi tak czy inaczej kopiowało do ostatniej aktywnej komórki w tym akruszu czyli do F6 - o ile to jest możliwe
    3. Pliki do którego chciałbym kopiować będzie posiadał stałą nazwę - jednak pliki z których będę kopiował będą posiadała różną nazwę i raczej różną lokalizację. (mam nadzieję, że z napisanego skryptu będę wiedział jak zminić nazwę pliku z którego ma zostać skopiowana zawartość)
  • Pomocny post
    Moderator Programowanie
    Na początek: Ad.1 i 3
    Wstaw nowy moduł do pliku 'z_którego_kopiuje.xls' i wklej poniższy kod
    Kod: vba
    Zaloguj się, aby zobaczyć kod

    Odpisz, czy taka forma ci odpowiada.
  • Poziom 6  
    Tak, taka forma jak najbardziej mi odpowiada :) jak na początek to jest super:)
  • Pomocny post
    Moderator Programowanie
    Wyszła podwójna (coraz gorzej z moim "okiem" ;)
    "słoik" (wzór) został "słoniną" (wynik). Cóż, zdarza się :)

    Zastąp poprzednie, poniższym
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    P.S. Coś się dzieje z wcięciami kodu przy kopiowaniu, znikają :/
  • Poziom 6  
    Jest super działa:) dziękuję:) a jak będę chciał zmienić, od którego wiersza i kolumny ma zacząć, to muszę zmienić wartości tych wyrażeń tak?

    wrs = 3 'pierwszy wiersz kolumny A
    kol = 3 'pierwsza kolumna z imionami
  • Pomocny post
    Moderator Programowanie
    Tak, no i jeszcze wiersz z imionami. Jest na sztywno. Jeśli zawsze będzie o jeden wyżej, linię:
    wkb.Sheets(1).Cells(wrsDst, 1) = .Cells(2, kol)
    zastąp:
    wkb.Sheets(1).Cells(wrsDst, 1) = .Cells(wrs-1, kol)
  • Poziom 6  
    Świetnie:) dziękuję:) dzisiaj będę testował ten skrypt i napiszę popołudniu jak mi wyszło:)
  • Moderator Programowanie
    Oj, źle podpowiedziałem. Najlepiej przypisać do jeszcze jednej zmiennej.
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Denerwujący jest ten brak wcięć. Problem zgłosiłem, pewnie wkrótce będzie to naprawione, ale dodaję załącznik (kod jest bardziej przejrzysty).
  • Poziom 6  
    Sprawdziłem i działa świetnie:) dziękuję bardzo za pomoc:)