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.

VBA Excel - Kopiowanie komórek z różnych skoroszytów do skoroszytu zbiorczego

krzysztof_01 11 Lip 2016 09:07 1329 5
  • #1 11 Lip 2016 09:07
    krzysztof_01
    Poziom 2  

    Dzień dobry,
    korzystam z kodu, który kopiuje mi wybrane komórki ze skoroszytu (o zmiennej nazwie) i konkretnego arkusza w tym skoroszycie (nazwa arkusza jest zawsze stała) do skoroszytu "zbiorczego" o stałej nazwie (w tym wypadku ZEST_ZAM.xlsx). W kodzie mam wpisaną "na sztywno" nazwę skoroszytu, z którego komórki są kopiowane i nie umiem tego zastąpić poleceniem (nie wiem czy tak to się nazywa), które powodowałoby, że kod działałby niezależnie od tego jaka to byłaby nazwa. Skoroszyt, z którego kopiowane są komórki jest zawsze otwarty (aktywny) i z niego uruchamiane jest makro. Gdy jego nazwa to KALKULATOR_1 wszystko działa, ale gdy ma inną nazwę to "klops".
    Fragment kodu, który sprawia mi problem to:

    .Cells(ostWs, i + 2) = Workbooks("KALKULATOR_1.xlsm").Sheets("ZAM_PODŁOGI").Range(lista(i))

    Gdy wpisuję "ThisWorkbook" lub ActiveWorkbook" to albo polecenie się nie wykonuje, albo skoroszyt zbiorczy nagle dostaje rozmiar ponad 11MB (z kilkunastu kB) i nie mogę go otworzyć.

    Cały kod wygląda następująco:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Próbowałem już szukać na forum rozwiązania, ale go nie znalazłem, choć przejrzałem mnóstwo wątków - przyczyną jest pewnie brak umiejętności programowania :cry:.
    Z góry dziękuję za pomoc, Krzysztof.

    0 5
  • #2 11 Lip 2016 09:51
    kinggustav
    Poziom 20  

    Na początek zmień nazwę pliku i zmień tak samo nazwę w kodzie. Powinno działać, cudów nie ma.
    W następnym kroku możesz wybrać plik za pomocą Application.FileDialog, zapamiętać, otworzyć plik i dalej robić to co chcesz. Parametry i sposób użycia Application.FileDialog znajdziesz łatwo na stronach MS albo pytaj.

    0
  • #3 11 Lip 2016 10:52
    JRV
    Specjalista - VBA, Excel

    Radziłbym zmienić kolejność tych wierszy

    krzysztof_01 napisał:
    Workbooks("ZEST_ZAM.xlsx").Close savechanges:=True
    End With

    0
  • #4 11 Lip 2016 11:02
    krzysztof_01
    Poziom 2  

    Dziękuje za szybka podpowiedź. Jednak chodzi o co innego - pewnie nieprecyzyjnie się wysłowiłem na początku. Otóż nazwa źródłowego pliku (w kodzie KALKULATOR_1) zmienia się automatycznie (niezależnie od operatora) podczas zapisu pliku źródłowego.
    Przykład operacji:
    - otwieram skoroszyt KALKULATOR_1 (jest to kalkulacja zamówienia dla Klienta);
    - wprowadzam w nim zmiany i zapisuję - do tej operacji mam kod zapisujący skoroszyt jako xlsm, ale już z nową nazwą (Klient jeszcze nic nie zamówił, ale ja zapisuję go już w bazie, gdyby się jednak zdecydował); skoroszyt z nową nazwą jest dokładną kopią skoroszytu źródłowego (KALKULATOR_1) tyle, że z inną nazwą (nazwisko Klienta_data);
    - Klient do mnie wraca - otwieram więc skoroszyt, który ma już nową nazwę (nazwisko Klienta_data) - Klient decyduje się na zamówienie więc daję wydruk - w kodzie do wydruku jest też zawarty kod, który załączyłem w pierwszym post-cie.
    - efektem wykonania kodu ma być wydruk zamówienia dla Klienta oraz zapis w skoroszycie ZEST_ZAM.xlsx określonych parametrów zamówienia po to, żebym mógł odnotowywać tam sobie status tegoż zamówienia (wysłano zamówienie do dostawcy, zamówienie zrealizowane, itp.)
    Raz jeszcze z góry dziekuję, Krzysztof.

    0
  • Pomocny post
    #5 11 Lip 2016 11:26
    JRV
    Specjalista - VBA, Excel

    Sprobuj

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #6 11 Lip 2016 11:56
    krzysztof_01
    Poziom 2  

    Serdeczne podziękowania dla Pana JRV.
    Bardzo, bardzo pięknie dziękuję!!! Działa wspaniale.
    Wczoraj pół niedzieli szukałem rozwiązania - a to takie proste.
    No cóż - "nie chciało się nosić teczki, trzeba nosić woreczki" :D .
    Pozdrawiam, Krzysztof

    0
  Szukaj w 5mln produktów