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

Jak zaprogramować makro VBA do dwustronnego druku z dwóch plików .xlsm?

martynka1999 07 Mar 2020 20:35 1266 8
REKLAMA
  • #1 18516942
    martynka1999
    Poziom 3  
    Posty: 60
    Ocena: 21
    Witam!
    Czy możliwe jest zaprogramowanie makrem wydruku dwustronnego, tak aby pierwsza strona pochodziła z "plik1" a druga z "plik2"?
    Obydwa pliki .xlsm znajdują się w różnych lokalizacjach.

    Docelowo każdorazowo potrzebuje wydrukować 4szt domyślnego obszaru wydruku z plik1 i na 2 z nich chciałabym aby z drugiej strony był domyślny obszar wydruku z plik2.

    Najlepiej jak by całość była wywołana w jeszcze innym pliku "plik3" który otworzy sobie potrzebne pliki w celu wydrukowania po czym je zamknie.

    Obecnie mam makro które wywołuje wydruk w plik1 z arkusza którego nazwa wskazana jest w P17 i makro2 w plik2, które uruchamiam po ręcznym przekręceniu stron wyglądające niemal identycznie.

    Moje makro wygląda tak:

    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 18520763
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    martynka1999 napisał:
    Czy możliwe jest zaprogramowanie makrem wydruku dwustronnego, tak aby pierwsza strona pochodziła z "plik1" a druga z "plik2"?

    Muszę cie zmartwić generalnie nie ma możliwości 'wygenerowania' tego pod jednym zadaniem drukowania.(można by to obejść ale za dużo 'roboty'.)
  • REKLAMA
  • #3 18520819
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    clubs napisał:
    można by to obejść ale za dużo 'roboty'

    Jeśli dokładnie wiesz jaki ma być układ wydruku :?: To możesz nagrać sobie makro kopiowania poszczególnych stron z pliku1 i pliku2 (w pożądanej kolejności) do pliku tymczasowego do jednego wspólnego arkusza "wydruku" :idea: i realizować wydruk z tego arkusza już w trybie dwustronnym :idea: :D
  • #4 18520839
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    Prot napisał:
    do jednego wspólnego arkusza "wydruku"

    Nie koniecznie (mogą być osobno) ważne żeby było w jednym skoroszycie.
  • #5 18520881
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    clubs napisał:
    mogą być osobno

    Z mojego doświadczenia wynika, że w jednym arkuszu łatwiej zautomatyzować cały obszar wydruku tj. jednolite nagłówki i stopki oraz ilość wierszy :idea: - co jest szczególnie ważne jeśli mamy do czynienia ze zmienną ilością stron do wydruku :D
  • REKLAMA
  • #6 18521331
    martynka1999
    Poziom 3  
    Posty: 60
    Ocena: 21
    Ilość stron do wydruku zawsze jest identyczna, a obszar wydruku zawsze zmieści się na jednej stronie. Zrobienie pomocniczego pliku będzie problematyczne za pomocą funkcji, ponieważ w jednym z plików codziennie dochodzi arkusz a w kolejnym raz w tygodniu. W obu plikach zawsze drukowany jest ostatni arkusz.
    Dodatkowo drukarka domyślnie ma ustawiony druk jednostronny, chodzi o to aby tylko na potrzebę tego konkretnego drukowania wydruk był dwustronny i wydrukowała tak jak opisałam w pierwszym poście. Wszystkie kolejne drukowania powinny być w dalszym ciągu jednostronne.

    Możliwe jest stworzenie makra które będzie kopiować potrzebne dane zawsze z ostatnich arkuszy plików i które zmieni ustawienia drukarki na wydruk dwustronny?

    Zielonego pojęcia nie mam jak coś takiego osiągnąć...
  • #7 18521413
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    martynka1999 napisał:
    Możliwe jest stworzenie makra które będzie kopiować potrzebne dane zawsze z ostatnich arkuszy plików

    Tak to jest całkiem łatwe :idea: , po otworzeniu kolejnych skoroszytów aktywujesz ostatni arkusz np.
    Sheets(Sheets.Count).Activate
    i kopiujesz to co Ci potrzeba gdzie chcesz :D
    Proponuję nagrać sobie odpowiednie makro, które będzie przeprowadzać to kopiowanie i wydruk (w ustawieniach dwustronnych) lub załączyć do postu przykładowe pliki, oraz ilustracje obu stron wydruku.
  • #8 18522380
    martynka1999
    Poziom 3  
    Posty: 60
    Ocena: 21
    Super 😉
    To tak skopiuje dane, a w jaki sposób ustawie druk dwustronny?
  • REKLAMA
  • Pomocny post
    #9 18522746
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    martynka1999 napisał:
    a w jaki sposób ustawie druk dwustronny?

    Tutaj właśnie jest cały problem :!: o którym prawdopodobnie pisał kolega @clubs
    clubs napisał:
    można by to obejść ale za dużo 'roboty'

    Kodem VBA nie można przestawiać ustawień sterownika drukarki :cry:
    Obejściem problemu może być np. "zdublowane zainstalowanie" posiadanej drukarki (z możliwością druku dwustronnego :D ) pod dwoma różnymi nazwami (np HPduplex i HPsimplex) i ustawienie dla tych instalacji odmiennych ustawień sterowników :idea:
    Za pomocą kodu VBA wybiera się tylko drukarkę na której ma być realizowany wydruk (fizycznie to ta sama drukarka :D , ale pracująca w różnych ustawieniach :spoko: ).

Podsumowanie tematu

✨ Użytkownik pyta o możliwość zaprogramowania makra VBA do dwustronnego druku z dwóch plików .xlsm, gdzie pierwsza strona pochodzi z "plik1", a druga z "plik2". Oba pliki znajdują się w różnych lokalizacjach, a użytkownik chce, aby makro było wywoływane z innego pliku "plik3". Odpowiedzi sugerują, że nie ma prostego sposobu na realizację tego zadania w jednym kroku, ale można stworzyć tymczasowy arkusz, do którego skopiowane zostaną odpowiednie strony z obu plików, a następnie zrealizować wydruk z tego arkusza. Użytkownik zwraca uwagę na problem z ustawieniami drukarki, która domyślnie jest ustawiona na druk jednostronny. Proponowane rozwiązanie to zainstalowanie drukarki pod dwiema różnymi nazwami, co pozwoli na zmianę ustawień drukowania w kodzie VBA.
Wygenerowane przez model językowy.
REKLAMA