logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Excel VBA - automatyczne drukowanie w zmiennych szablonach

Creasy 10 Lip 2020 17:51 1812 21
REKLAMA
  • #1 18810498
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    Cześć,
    Stworzyłem arkusz w którym chciałbym aby po naciśnięciu przycisku automatycznie przenosiło każdy wiersz do odpowiedniego szablonu (nr szablonu w kolumnie AC) do wiersza nr 100 i później drukowało szablon w ilości znajdującej się w kolumnie AD (Ilość druku). I tak dla każdego wiersza. Ilość wierszy będzie codziennie zmienna więc musi drukować tylko te które nie są puste. Szablony będą zmienne. Pomógłby ktoś z tym? Sam nie mam pojęcia jak to zrobić.
    Załączniki:
    • Zeszyt2.xlsx (28.68 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #3 18811531
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    Ten załącznik to arkusz w którym ma być makro. Cos podobnego znalazłem tym temacie https://www.elektroda.pl/rtvforum/topic3464683.html Tylko tam szablon jest jeden stały. Chodzi o to aby każdy wiersz przenosiło do odpowiedniego szablonu do wiersza 100. Z tego wiersza będą podstawione w szablonie dane. I później wydruk jednostronny w odpowiedniej ilości na podstawie komórki w kolumnie AD (ilość wydruku) . I tak dla każdego wiersza zapełnionego.
  • REKLAMA
  • #4 18811598
    PRL
    Poziom 41  
    Posty: 6890
    Pomógł: 953
    Ocena: 892
    Cytat:
    I tak dla każdego wiersza zapełnionego

    Ma być drukowany tylko wiersz 100 tyle razy, ile jest w AD100?
    Pomogłem? Kup mi kawę.
  • #5 18811920
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    Nie ma być drukowany szablon z zaznaczonym obszarem wydruku. Na razie szablony są puste ale będą tam druki robocze. Wiersz 100 będzie służył tylko po to aby szablon pobierał z niego dane (odnośniki do poszczególnych komórek.
  • Pomocny post
    #6 18812014
    PRL
    Poziom 41  
    Posty: 6890
    Pomógł: 953
    Ocena: 892
    Cytat:
    Na razie szablony są puste


    Dlatego na razie kod wyglądałby tak:

    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
    Pomogłem? Kup mi kawę.
  • #7 18812056
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    Wstawiłem szablony żeby było wiadomo o co chodzi. Na razie wszędzie ten sam. Później w każdej zakładce będzie inny szablon.
    Załączniki:
    • Zeszyt2.xlsx (51.65 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #8 18812084
    Zbych034
    Poziom 39  
    Posty: 4671
    Pomógł: 547
    Ocena: 1412
    A funkcja wyszukaj pionowo nie załatwi tego?
  • #9 18812087
    PRL
    Poziom 41  
    Posty: 6890
    Pomógł: 953
    Ocena: 892
    Cytat:
    funkcja wyszukaj pionowo nie załatwi tego?

    Formuła nie wydrukuje zaznaczonego obszaru.
    Pomogłem? Kup mi kawę.
  • #10 18812100
    Zbych034
    Poziom 39  
    Posty: 4671
    Pomógł: 547
    Ocena: 1412
    To pobieranie danych za pomocą formuł a wydruk za pomocą makra.
  • REKLAMA
  • Pomocny post
    #11 18812102
    PRL
    Poziom 41  
    Posty: 6890
    Pomógł: 953
    Ocena: 892
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod


    Ustaw arkusze szablonów na początku, od 1 do 5.
    Pomogłem? Kup mi kawę.
  • #12 18812357
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    Działa, ale nie do końca tak jak powinno. Kod drukuje wszystkie wiersze od 2 do 492. A powinien tylko te które są zapisane. Codziennie będzie to inna liczba wierszy w zależności od liczy zleceń.
    Załączniki:
    • Zeszyt2 ? kopia.xlsx (51.76 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #14 18812390
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    Na samym początku jest przecież w opisie
  • #16 18813570
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    Ok może wyrażam się nieprecyzyjnie. Zapisane, w sensie te wiersze które posiadają dane. Z tego co czytałem, to ta część kodu ow = e.Cells(Rows.Count, "A").End(xlUp).Row za to odpowiada (mam rację?). Potestowałem trochę ten kod i wychodzi na to że każdy wiersz który posiada dane, jest podstawiany do każdego szablony po kolei od 1-5 i drukowany w ilości kopi z kolumny AD. Tymczasem wiersz powinien być podstawiany tylko do jednego szablonu, tego który jest w kolumnie AC.
    Załączniki:
    • Zeszyt2 ? kopia.xlsx (56.65 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #17 18813579
    PRL
    Poziom 41  
    Posty: 6890
    Pomógł: 953
    Ocena: 892
    Cytat:
    może wyrażam się nieprecyzyjnie

    Przyznaję Ci rację.

    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
    Pomogłem? Kup mi kawę.
  • #18 18813608
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    Teraz jest ok. Jutro potestuję. Dało by się zrobić jeszcze tak aby zamiast zakresu A1:T44 drukowało ustawiony obszar wydruku który byłby inny dla każdego szablonu?
  • #19 18813651
    PRL
    Poziom 41  
    Posty: 6890
    Pomógł: 953
    Ocena: 892
    Cytat:
    Dało by się

    Dałoby się.

    Tak ciężko Ci jest przygotować arkusze?
    Co ma się nie dać? Ale skąd brać zakres do wydruku?
    Z arkusza Export, jako kolejna kolumna aaaaaaaaaaaaa, bbbbbbbbbbbbbb, ccccccccccccccc???
    Pomogłem? Kup mi kawę.
  • #20 18813683
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    W sumie jest dobrze jak jest. Nie jest mi ciężko przygotować arkusze. Chodziło mi tylko o to że zakres wydruku byłby już ustawiony w każdym szablonie. Może wsytarczy ustawić w kodzie wydruk bez podawania zakresu. wtedy drukowałby się obszar wydruku ustawiony w szablonie?
  • #22 18813712
    Creasy
    Poziom 10  
    Posty: 17
    Ocena: 4
    PRL napisał:
    Cytat:
    Może wsytarczy ustawić w kodzie wydruk bez podawania zakresu

    :)
    Co to za smieszki? Zrobiłem tak i działa :) ? Szybko sie uczę hehe
    :
    Kod: Text
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

✨ Użytkownik stworzył arkusz w Excelu, w którym chce zautomatyzować proces przenoszenia danych z wierszy do odpowiednich szablonów oraz ich drukowania w zależności od ilości określonej w kolumnie AD. W odpowiedziach poruszono kwestie dotyczące kodu VBA, który powinien kopiować dane do wiersza 100 w odpowiednich szablonach, a następnie drukować je w zadanej liczbie. Ustalono, że kod powinien działać tylko na wierszach zawierających dane, a także że każdy wiersz powinien być przypisany do konkretnego szablonu na podstawie wartości w kolumnie AC. Ostatecznie, użytkownik uzyskał działający kod, który umożliwia drukowanie z ustawionym obszarem wydruku w każdym szablonie.
Wygenerowane przez model językowy.
REKLAMA