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.

excel vba makro petla kopiowa - problem, excel, vba, makro, pętla kopiowanie

daredevkrak 02 Lut 2017 21:21 915 3
  • #1 02 Lut 2017 21:21
    daredevkrak
    Poziom 9  

    Potrzebuje pomocy w napisaniu makra w excelu, kopiowanie danych z jednego pliku excela do drugiego excela w petli gdzie jest wiele plików.
    Wyjaśniam o co mi chodzi.
    Mam plik excel nazwany np dane1.xls ( dane2.xls, dane3.xls itd tych plików mam ponad 200 w folderze) z kilkunastoma arkuszami oraz plik wzor.xls. (
    Potrzebuje wyciągnąć z pliku dane1.xls określone zakresy komórek (w tych wszystkich plikach wszystkie zakresy sa takie same) i z określonych arkuszy i kopiując plik wzor.xls ktory zapisuje pod nazwa dane1-2017.xls kopiując zakresy komórek do odpowiednich arkuszy i odpowiednich nowych zakresów komórek do skopiowane w pliku dane1-2017.xls.
    Jak napisać pętle które uwzględnia takie założenia i robi to dla 200 plików w folderze?
    Bede wdzięczny za pomoc.

    0 3
  • #2 10 Mar 2017 12:20
    MarcinWar
    Poziom 2  

    Heja

    yyyyy przyznam że tak to opisałeś że... ciężko to dobrze zrozumieć :P

    Ale ok na początek napiszmy programik który:

    1. "przeleci" przez wszystkie pliki z katalogu (do którego ścieżkę musisz wpisać w kodzie)
    2. weźmie nazwę pierwszego z tych plików
    3. otworzy go (np 1.xlsx)
    4. z otwartego pliku skopiuje zakres
    5. wklei ten skopiowany zakres do naszego pliku tego z makrem (matki)
    6. zamknie ten otwarty pliczek (ten 1.xlsx)
    7. pobierze nazwę kolejnego pliku (np 2.xlsx)
    8. (wróci do kroku 3 czyli otworzy ten plik którego nazwę pobrał przed chwilą)
    9. i zrobi to dla wszystkich plików w katalogu

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Daj znać czy Ci to pomogło :)

    0
  • #3 10 Mar 2017 21:03
    daredevkrak
    Poziom 9  

    Masz racje może faktycznie ciężko i spaprałem opis, postaram się to sprawdzić po weekendzie. Jeszcze raz opisuje o co mi
    chodzi , mam 200 plikow w folderze "dane", w folderze "WZOR" jest plik wzorcowy wzor.xls oraz folder "CEL"
    czyli jest tak skrypt z folderu "dane" pobiera pierwszy plik to jest otwiera plik np g35.xls kopiuje odpowiednie zakresy komorek i z poszczególnych arkuszy , otwiera plik z folderu "WZOR" plik wzor.xls wkleja wcześniej skopiowane dane tj zakres tych samych danych z pliku G35 i wkleja to w innej kolumnie(oczywiscie zachowujac te same nazwy arkuszy tylko wkleja poczatek do innej kolumny) i zapisuje ten plik jako G35-2017 w folderze "CEL". zamyka te pliki, potem otwiera następny plik w folderze "dane" np "G37" kopiuje odpowiednie zakresy komórek , otwiera plik z folderu "WZOR" plik wzor.xls, wkleja wcześniej skopiowane dane tj zakres danych z pliku G37 i wkleja w innej kolumnie i zapisuje ten plik jako G37-2017 w folderze "CEL". zamyka te pliki i tak dalej az zrobi operacje dla wszystkich plików w folderze "dane"
    Dzieki za pomoc mam nadzieje ze opisałem to poprawnie. Umiem kopiowac zakresy komorek i zakresy arkuszu ale nie umiem zrobic petli kopiowania wg opisanego przez ze mnie sposobu

    MarcinWar napisał:
    Heja

    yyyyy przyznam że tak to opisałeś że... ciężko to dobrze zrozumieć :P

    Ale ok na początek napiszmy programik który:

    1. "przeleci" przez wszystkie pliki z katalogu (do którego ścieżkę musisz wpisać w kodzie)
    2. weźmie nazwę pierwszego z tych plików
    3. otworzy go (np 1.xlsx)
    4. z otwartego pliku skopiuje zakres
    5. wklei ten skopiowany zakres do naszego pliku tego z makrem (matki)
    6. zamknie ten otwarty pliczek (ten 1.xlsx)
    7. pobierze nazwę kolejnego pliku (np 2.xlsx)
    8. (wróci do kroku 3 czyli otworzy ten plik którego nazwę pobrał przed chwilą)
    9. i zrobi to dla wszystkich plików w katalogu

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Daj znać czy Ci to pomogło :)

    0
  • #4 12 Lut 2018 18:49
    daredevkrak
    Poziom 9  

    daredevkrak napisał:
    Masz racje może faktycznie ciężko i spaprałem opis, postaram się to sprawdzić po weekendzie. Jeszcze raz opisuje o co mi
    chodzi , mam 200 plikow w folderze "dane", w folderze "WZOR" jest plik wzorcowy wzor.xls oraz folder "CEL"
    czyli jest tak skrypt z folderu "dane" pobiera pierwszy plik to jest otwiera plik np g35.xls kopiuje odpowiednie zakresy komorek i z poszczególnych arkuszy , otwiera plik z folderu "WZOR" plik wzor.xls wkleja wcześniej skopiowane dane tj zakres tych samych danych z pliku G35 i wkleja to w innej kolumnie(oczywiscie zachowujac te same nazwy arkuszy tylko wkleja poczatek do innej kolumny) i zapisuje ten plik jako G35-2017 w folderze "CEL". zamyka te pliki, potem otwiera następny plik w folderze "dane" np "G37" kopiuje odpowiednie zakresy komórek , otwiera plik z folderu "WZOR" plik wzor.xls, wkleja wcześniej skopiowane dane tj zakres danych z pliku G37 i wkleja w innej kolumnie i zapisuje ten plik jako G37-2017 w folderze "CEL". zamyka te pliki i tak dalej az zrobi operacje dla wszystkich plików w folderze "dane"
    Dzieki za pomoc mam nadzieje ze opisałem to poprawnie. Umiem kopiowac zakresy komorek i zakresy arkuszu ale nie umiem zrobic petli kopiowania wg opisanego przez ze mnie sposobu

    MarcinWar napisał:
    Heja

    yyyyy przyznam że tak to opisałeś że... ciężko to dobrze zrozumieć :P

    Ale ok na początek napiszmy programik który:

    1. "przeleci" przez wszystkie pliki z katalogu (do którego ścieżkę musisz wpisać w kodzie)
    2. weźmie nazwę pierwszego z tych plików
    3. otworzy go (np 1.xlsx)
    4. z otwartego pliku skopiuje zakres
    5. wklei ten skopiowany zakres do naszego pliku tego z makrem (matki)
    6. zamknie ten otwarty pliczek (ten 1.xlsx)
    7. pobierze nazwę kolejnego pliku (np 2.xlsx)
    8. (wróci do kroku 3 czyli otworzy ten plik którego nazwę pobrał przed chwilą)
    9. i zrobi to dla wszystkich plików w katalogu

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Daj znać czy Ci to pomogło :)


    Dzieki za pomoc, troche to trwało bo byłem zajety- ale nie o to mi chodziło twoj skrypt otwiera wszystkie pliki excel i wkleja wszystkie zakresy komorek do jednego pliku excela.

    Tutaj wyjasniam o co mi chodzi

    mam wiele plików
    - o nazwie np "roznenazwy".xls, w folderze zrodlo ( w tym folderze jest wiele plików),
    - mam drugi plik o nazwie wzor.xls w folderze wzor,
    operacje:
    1) potrzebuje aby skrypt najpierw wział otworzył pierwszy plik który jest w folderze zrodło np: 1nazwa1.xls skopiował z niego zakres danych komorek z pierwszego arkusza (A2:D10) , zakres danych drugiego arkusza(A7:D12), zakres danych z trzeciego arkusza(A4:D10) itd

    2) - otworzył plik wzor.xls w z folderu zrodło - wkleił zakres danych z komorek z pierwszego arkusza pliki 1nazwa1.xls do pierwszego arkusza otwartego pliku wzor.xls,
    - wkleił zakres danych z komorek z drugiego arkusza pliki 1nazwa1.xls do drugiego arkusza otwartego pliku wzor.xls,
    - wkleił zakres danych z komorek z trzeciego arkusza pliki 1nazwa1.xls do trzeciego arkusza otwartego pliku wzor.xls
    itd
    3) zapisał otwarty plik wzor.xls (skopiowane do niego w drugim punkcie operacje wklejania zakresu komorek) pod nazwa 1nazwa1-2018.xls w folderze zrobione
    i tutaj pelta
    która otwiera kolejny plik w folderze zrodlo (np Jamajka,xls i powtórzył operacje punktu pierwszego i drugiego oraz trzeci (dokładniej aby plik wzor zapisał plik jako wg schematu nazwa otwieranego pliku plus dodajac do nazwy rok 2018 (np Jamajka-2018.xls) w folderze zrobione
    i znowu petla az wszystkie pliki w folderze zrodlo zostana w ten sposob przerobione.

    Dzieki
    za odowiedz

    0