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.

[EXCEL][VBA] Kopiowanie z różnych plików do różnych arkuszy

25 Kwi 2018 23:38 519 3
  • Poziom 2  
    Cześć,
    Mam problem z pewnym makrem. Znalazłem je w internecie i przerobiłem pod swoje potrzeby(dane kopiują się do przypisanych arkuszy, a nie jedno pod drugim jak było w wersji pierwotnej).

    Generalnie chciałbym żeby z pliku i arkusza nawigacja móc otworzyć wskazane w pliku nawigacja dokumenty, następnie wejść w odpowiednie, przypisane do nich arkusze, skopiować całe dane jakie są w tych arkuszach i wkleić je jako wartości do pliku BIORCA do odpowiednio przypisanych arkuszy(każdy plik ma swój arkusz).

    Problem z kodem jest taki, że nie kopiuje całego zakresu, a kompletnie nie mam pojęcia jak to zapisać i w którym miejscu(jakie zmiany w pętli). Będę wdzięczny za pomoc i wskazówki

    Poniżej kod:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 22  
    To makro naprawdę ci coś kopiuje? Jakoś tego nie widzę, albo kopiuje w sposób którego kompletnie nie rozumiem.
    Proponuję zacząć od początku:
    1. Skąd masz listę nazw plików? Jest stała, czy się zmienia? Może lepiej zrobić pętlę po wszystkich plikach o pasujących nazwach.
    2. Dopisz to kopiowanie: [range].copy, [workbooks(...)].activate, [range].Paste lub PasteSpecial. Określając te [range] musisz zadbać, żeby kopiowało co trzeba (sprawdza się robiąc .Select podczas pracy krokowej) i gdzie trzeba.
  • Poziom 2  
    Nazwa pliku jest zmienna i wpisuje ją w komórce od A2 w dół. Rozszerzenie pliku jest od B2 w dół. Arkusz dawcy pd C2 w dół. Arkusz docelowy od D2 w dół.
    Wszystkie pliki dawcy są w jednym folderze do którego ścieżka jest w polu określonym w arkuszu. Tak samo bezpośrednia ścieżka do pliku biorcy jest określona w pliku nawigacja.

    Zmieniłem trochę i pozostaje pytanie w jaki sposób zrobić żeby kopiowano do właściwego arkusza przy kolejnym przejściu pętli.
    nazwy arkusza umieściłem w polach od D2 w dół. Jak wpisałem ręcznie "Arkusz1" to do takiego pójdzie tylko chodzi mi o to żeby zastąpić to automatycznym pobraniem nazwy arkusza który jest przypisany do danego pliku w nawigacji.


    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 22  
    Musisz zamienić nazwę Arkusz1 na właściwą dla tego pliku w wierszu (ta część w nawiasie):
    Sheets("Arkusz1").Activate
    Ja bym to zrobił jakoś tak:
    Sheets(Cells(otw, "C")).Activate
    O to pytasz? Jeżeli chcesz skopiować tylko wartości to użyj PasteSpecial z odpowiednimi parametrami.