Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Drukowanie do PDF tylko wybranych arkuszy spełniających warunek w VBA (nazwa, scieżka, petla)

domrad 24 Feb 2023 21:40 225 7
  • #1
    domrad
    Level 4  
    Cześć,
    Mam w jednym pliku kilka arkuszy o różnych nazwach. Chcę wydrukować tylko te arkusze, które spełniają mój warunek, te arkusze które nie spełniają warunku mają zostać pominięte do drukowania. Na razie mam kod, który drukuje wszystkie arkusze do pdf, ale baza się rozrasta i nie chciałbym drukować wszystkiego. Jeden arkusz to jeden plik pdf.

    kod, który działa:
    Code: vbscript
    Log in, to see the code


    kod z którym kombinuję:
    Code: vbscript
    Log in, to see the code
  • Helpful post
    #2
    Maciej Gonet
    VBA, Excel specialist
    domrad wrote:
    Chcę wydrukować tylko te arkusze, które spełniają mój warunek
    Opisz to dokładniej. Jaki warunek mają spełniać arkusze do drukowania? W zacytowanym kodzie sprawdzasz kolor komórek, ale nie bardzo wiadomo, dlaczego tak. Sprawdzanie koloru kilku komórek naraz może być nieskuteczne. Nie wystarczy jedna komórka?
    Poza tym linia kodu
    Code: vbscript
    Log in, to see the code
    jest generalnie niepoprawna, jeśli działa to nazwa arkusza musi być jakaś szczególna (np. może być liczbą). Nie powinno się tak pisać kodu.
  • #3
    domrad
    Level 4  
    p.s. Dzień dobry Panie Macieju, miło Pana widzieć, 01 lutego mi pan pomógł, to jest dalsza część sprawy.
    Tak, zgadza się, nazwa arkusza to liczba, niestety nie mogę tego zmienić bo nazwa arkusza czyli liczba zaczyna się od ,np. 104,105,120,147,148 itd. Ta liczba oznacza nr kontraktu. Wiem, że może to w przyszłości generować problemy. Sprawa wygląda tak: user wyszukuje zakres dat z inputboxa między, np. 27.01.2023 a 02.02.2023 - jak warunek znajdzie to koloruje na niebiesko a filtr wyświetla tylko niebieskie daty w kolumnie H we wszystkich arkuszach. W tych arkuszach w których nie znajdzie szukanej daty filtr nie robi nic. Następnie chcę wydrukować tylko te arkusze, które mają niebieskie daty a pozostałe pominąć. Można ukryć arkusz który nie ma niebieskiej daty i druknąć resztę. Na końcu makra mam czyszczenie filtrów i koloru, arkusze muszą wrócić do stanu pierwotnego. Jeśli nie da się zrobić ukrycia lub pominięcia arkusza /arkuszy, które nie spełniają warunku to będę drukował wszystko a user ma uważać co robi. Teraz tak myślę, że faktycznie odwołanie do nazwy arkusza w tym makrze jest zbędne w procesie drukowania, można to zmienić i odwołać się do numeracji kodowej (codename). Ważne aby plik pdfa zapisał się z nazwą ,którą ciągnie z komórki A1. Jestem początkujący w VBA więc popełniam błędy, za każdą sugestię i konstruktywną krytykę serdecznie dziękuję, uwagi i pomoc mile widziana.
    Niżej cały kod, ten działający na którym drukuję wszystkie arkusze.
    Code: vbscript
    Log in, to see the code
  • Helpful post
    #4
    Maciej Gonet
    VBA, Excel specialist
    Przydałby się jakiś plik przykładowy do testów.
    Czy to kolorowanie dat jest potrzebne do czegokolwiek poza wyborem pozycji do druku?
    Można przecież filtrować bezpośrednio po datach i od razu drukować.
  • #5
    domrad
    Level 4  
    Dla mnie kolorowanie jest zbędne. Wynikiem końcowym jest wydruk pdfa z zakresu szukanych dat, pomysł kolorowania to prośba użytkowników bazy, sądzę, że da się ich namówić do rezygnacji z kolorów.
  • Helpful post
    #6
    Maciej Gonet
    VBA, Excel specialist
    Moim zdaniem to można znacznie uprościć, nie dzielić na raty, tylko od razu filtrować i drukować arkuszami, bez kolorowania.
    Mam tylko dwie wątpliwości.
    1) W jakim stanie mają być arkusze po zakończeniu operacji? W pliku, który załączyłeś były włączone autofiltry w arkuszach, a Twój kod je usuwa.
    2) Po co jest ustawiona opcja wyświetlenia (publikacji) plików .pdf po zapisie? Jak tych plików jest kilka/naście, to bardzo przedłuża działanie programu. Przecież można je sobie obejrzeć później.
  • #7
    domrad
    Level 4  
    Jeśli można uprościć to fajna sprawa, faktycznie nie pomyślałem o tym aby filtrować i od razu drukować. Nie wpadłem na ten pomysł :).
    ad.1 ) arkusze mają być czyste bez filtra, widocznie puściłem inne makro z filtrem
    ad.2) publikacja pdfa po zapisie, była włączona do testu, domyślnie ma być wyłączona
  • #8
    domrad
    Level 4  
    Cześć,
    Sprawdziłem makro, działa rewelacyjnie. Pomysł z drukowaniem super. Prościej i łatwiej :)
    Teraz nauka (porównanie) i analiza Twojego kodu vs mój, mam się na czym uczyć :)
    Dziękuję za pomoc i pozdrawiam.