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

[Rozwiązano] Makro do zapisu i drukowania w PDF - automatyczny zapis dla każdego numeru rej. z kolumny 'B' i 'H'

jasuchy 30 Sty 2022 13:01 699 18
REKLAMA
  • #1 19852585
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    Witam,
    Ze względu że nie mogę znaleść podobnego tematu a zarazem nie mogę zrobić zadania jakie mnie interesuję prosze o pomoc.
    Mianowicie w załączniku jest plik który posiada makro do zapisu i drukowania w PDF-ie.To jest zrozumiałe i działa jak należy.
    Wybierając w kolumnie "B" dany numer rej. poprzez sortowanie/filtrowanie i naciśnięciu przycisku Drukuj,otwiera się dokument w PDF-ie i można drukować.
    Chciałbym aby za jednym przyciskiem zapisało mi w ten sam sposób wszystkie wpisy z kolumny "B" ale oddzielnie dla każdego numeru rej. najlepiej biorąc dane z listy z kolumny"H" która aktualizuje się po dodaniu w kolumnie "B" nowego numeru rej.
    Czy jest to do zrealizowania?
    Z góry dziękuję za wszelką pomoc .
    Załączniki:
    • Zapis PDF.7z (22.13 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 19853151
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    Sprawdź: .
    Załączniki:
    • Zapis PDF2.rar (23.94 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #3 19853387
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    Jak zawsze dziękuję za pomoc.
    Sprawdziłem lecz musiałem to przenieść do pliku roboczego i troche trwało.
    Jest mały problem bo po zapisaniu wszystkich danych do PDF-a,co robi bardzo dobrze,wyrzuca błąd
    "Run-time error '13'
    Type mismatch"
    i wskazuje na linijkę ,podświetlając na żółto
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    Cały mój kod teraz wygląda tak
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    Chociaż do końca nie mogę rozgryść tego "x" do czego on się odnosi.(x=3 i x=x+1)???
  • REKLAMA
  • #4 19853420
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    Nie wiem co masz w kolumnie T ?
    w pliku, który wrzuciłeś pętla działa gdy ma wszystko różne od 0 (Cells(x, 8) <> 0), bo w kolumnie H ostatnie było 0, więc przerywa działanie pętli.
    jasuchy napisał:
    Chociaż do końca nie mogę rozgryść tego "x" do czego on się odnosi.(x=3 i x=x+1)???

    zmienna x to numer wiersza od którego rusza pętla.
  • #5 19853440
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    Kolumnie T jest właśnie ta lista co w pliku testowym była w H
  • REKLAMA
  • #6 19853443
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    jasuchy napisał:
    Kolumnie T jest właśnie ta lista co w pliku testowym była w H

    A kończy się zerem?
  • #7 19853466
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    Pod ostatnim numerem rej. w "T" jest #N/D
    A w testowym jest pod ostatnim zero
  • Pomocny post
    #8 19853489
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    podmień na:
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • #9 19853514
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    Teraz zapisuje bez błędu na końcu.
    Działo się tak ponieważ był wskazany inny zakres do tej listy,nie z kolumny "B" tylko z innego spisu pojazdów.
    Dziękuję jeszcze raz za pomoc.
  • #10 19854558
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    @clubs
    Jeszcze jedno pytanie.Chcąc zapisać nowe i tylko dane z tego roku(2022) lub od konkretnej daty,jak to dopisać.
    Samo filtrowanie i sortowanie w kolumnie z datą nic nie daje gdyż makro czyta z kolumny,w tym przypadku,"T"
    Dodanie zarejestrowanego makra również nie pomaga,mimo że widoczne są tylko wpisy z tego roku ,zapisuje wszystkie wpisy na podstawie podanej kolumny.
    ActiveSheet.ListObjects("Tabela2").Range.AutoFilter Field:=1, Criteria1:= _
    Array("="), Operator:=xlFilterValues, Criteria2:=Array(0, "1/2/2022")
    Tak myślę-Czy może dodatkowa lista z uwzględnieniem w formule danego roku i wskazanie jej w kodzie?
    Czy może coś innego?
  • REKLAMA
  • #11 19855376
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    pod tym dopisz

    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • #12 19855457
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    Po dodaniu tak jak napisałeś powstaje błąd linijkę niżej-na załączonym obrazku
    Tak samo w tym pliku testowym od Ciebie jak i w moim roboczym zapisuje wszystkie pliki ale brak danych,puste wpisy-drugi zrzut ekranu
    Podczas prób robiło to samo jeżeli zarejestrowane makro wkleiłem na początek kodu
    Załączniki:
    • Zapis PDF2.rar (23.94 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Makro do zapisu i drukowania w PDF - automatyczny zapis dla każdego numeru rej. z kolumny 'B' i 'H' Zrzut ekranu (222).png (183.74 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Makro do zapisu i drukowania w PDF - automatyczny zapis dla każdego numeru rej. z kolumny 'B' i 'H' Zrzut ekranu (221).png (236.69 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #13 19855503
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    jasuchy napisał:
    o dodaniu tak jak napisałeś powstaje błąd linijkę niżej-na załączonym obrazku

    ustaw inna datę np: (bo np. WS0003 nie miało daty powyżej 20)
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • #14 19855528
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    Data datą ,to już wcześniej zmieniłem,ale zapisuje puste karty PDF z ostatnim numerem rej.
    Jeżeli jest wpis robiony w 2022 roku to zapisuje normalnie czyli wpisy tylko z tego roku.-zrzut ekranu
    Jeżeli w następnym numerze nie ma wpisu to zapisuje czyste PDF z nagłoówkiem poprzedniego numeru.-zrzut ekranu
    Załączniki:
    • Makro do zapisu i drukowania w PDF - automatyczny zapis dla każdego numeru rej. z kolumny 'B' i 'H' Zrzut ekranu (223).png (226.72 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Makro do zapisu i drukowania w PDF - automatyczny zapis dla każdego numeru rej. z kolumny 'B' i 'H' Zrzut ekranu (224).png (184.62 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #15 19855598
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    jasuchy napisał:
    Jeżeli w następnym numerze nie ma wpisu to zapisuje czyste PDF z nagłoówkiem poprzedniego numeru

    Trzeba dodać instrukcje 'if" pewnie są w bazie daty niespełniające kryteria i niektóre mniejsze niż 2022-01-01.
  • #16 19857870
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    @clubs
    Tak tylko informacyjnie,
    Wszelkie próby z VBA spełzły na niczym.Efekt cały czas taki sam,zapisuje puste karty,lub wszystko od początku.
    Póki co wspomogłem się dodatkową kolumną "Zakres2",gdzie za pomocą formuły
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    Wybiera mi z kolumny "A" wpisy z rokiem wskazanym w komórce "M2"
    Dopiero wtedy wskazana kolumna "T" gdzie zmienione odwołanie na "Zakres2" pokazuje tylko numery ze wskazanego roku.
    I tak samo zapisuje w PDF-e(nawet numery zgadzają się z tymi z kolumny B.(Efekt w załączniku)
    Do tego tylko linijkę w vba musiałem dodać ,którą przysłałeś.
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    Może i Makrem byłoby łatwiej ale.....poległem.
    Cały kod wygląda następująco:
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    Dzięki jeszcze raz za pomoc.
    Załączniki:
    • Makro do zapisu i drukowania w PDF - automatyczny zapis dla każdego numeru rej. z kolumny 'B' i 'H' Zrzut ekranu (225).png (281.16 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #17 19858066
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    jasuchy napisał:
    Może i Makrem byłoby łatwiej ale.....poległem.

    No to masz z instrukcją "if" :) (dodane do twojego kodu)
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • #18 19860611
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    clubs napisał:
    No to masz z instrukcją "if" (dodane do twojego kodu)

    Dziś dopiero sprawdziłem.
    Instrukcja super,nie może być inaczej.
    Działa jak powinno.
    Dziękuję.
  • #19 20371456
    jasuchy
    Poziom 10  
    Posty: 94
    Ocena: 22
    Porady @clubs pomogły i rozwiązały problem.

Podsumowanie tematu

✨ Użytkownik poszukiwał pomocy w zakresie makra do zapisu i drukowania dokumentów PDF z arkusza Excel, które automatycznie zapisuje dane z kolumny "B" oraz "H". Po wprowadzeniu poprawek do kodu VBA, użytkownik napotkał błąd "Run-time error '13: Type mismatch", który został rozwiązany poprzez zmianę warunku pętli na "Do While Not IsError(.Cells(x, 20))". Dodatkowo, użytkownik chciał wprowadzić filtrację danych według roku, co wymagało dodania instrukcji "if" oraz odpowiednich filtrów w kodzie. Ostatecznie, po wprowadzeniu sugerowanych poprawek, makro działało poprawnie, zapisując tylko dane z roku 2022.
Wygenerowane przez model językowy.
REKLAMA