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.

excel vba drukowanie na dwóch drukarkach

grzegorzchm 23 Lis 2017 20:15 1869 31
  • #1 23 Lis 2017 20:15
    grzegorzchm
    Poziom 8  

    Witam.
    Proszę o pomoc w napisaniu makra które będzie drukowało informacje zawarte w komórce A1 na drukarce zebra zainstalowanej w sieci na innym komputerze (drukarka drukuje etykietę z nazwą klienta zawartą w komórce A1) po naciśnięciu przycisku "drukuj nazwę klienta" a drugie makro drukuje cały arkusz zawierające pozostałe dane na drukarce domyślnej (zainstalowanej w sieci) po naciśnięciu przycisku "drukuj całość"
    Z drugim makrem jestem w stanie sobie poradzić lecz makro pierwsze to dla mnie problem.
    Przeszukałem forum lecz podobnego problemu nie znalazłem.
    Proszę o pomoc

    0 29
  • #2 23 Lis 2017 20:46
    clubs
    Poziom 32  

    Witam

    W pierwszym makro dopisz

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    jak również w printout możesz zdefiniować nazwę drukarki

    0
  • #3 23 Lis 2017 20:48
    JRV
    Specjalista - VBA, Excel

    Mozesz zarejestrowac nakie makro?

    0
  • #4 23 Lis 2017 22:08
    grzegorzchm
    Poziom 8  

    Próbowałem ale nie wiem dlaczego excel ciągle chce drukować na domyślnej drukarce cały arkusz. Dodam że drukarka jest w sieci.

    0
  • #5 24 Lis 2017 07:02
    JRV
    Specjalista - VBA, Excel

    Przed tym kursor na A1, w ustawieniach druku strony zaznacz "druk wybranego zakresu"?
    Co bylo w makrze?
    Krótko mówiąc Napisz: Range("A1").PrintOut ActivePrinter = "którzy potrzebujesz"

    0
  • #6 24 Lis 2017 08:01
    grzegorzchm
    Poziom 8  

    Witam.
    Nagrałem makro z ustawieniami wydruku. Mam pytanie gdzie tu wstawić lokalizację wydruku
    Drukarka znajduje się: \\Ivos-2-PC\DYMO LabelWrier 450 (musiałem zmienić na dymo ale to pewno bez zanczenia)
    I zauważyłem że jak już mam ustawiony obszar wydruku dla całego arkusza to żeby wydruk etykiety był właściwy to muszę podać zakres komórek w tym wypadku zmieniłem lokalizację z A1 na AT9:AY9

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Proszę o pomoc.
    Dzięki

    0
  • Pomocny post
    #7 24 Lis 2017 08:26
    JRV
    Specjalista - VBA, Excel

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Dodano po 2 [minuty]:

    zmien A1 nz AT9:AY9

    0
  • #8 24 Lis 2017 11:51
    grzegorzchm
    Poziom 8  

    Zmodyfikowałem nieco kod:
    Sub drukuj_klient()
    Range("AS7:AU9").PrintOut Copies:=1, ActivePrinter:="\\Ivos-2-PC\DYMO LabelWrier 450"
    End Sub

    ale niestety drukowana jest kartka na drukarce domyślnej.
    Nie wiem w czym problem...
    Może jakaś podpowiedź...
    Dziękuję

    Dodano po 12 [minuty]:

    No tak, popełniłem błąd literówka w nazwie drukarki.
    Miało być writer a nie wrier.
    MAkro działa świetnie.
    Dziękuję za pomoc.
    Pozdrawiam

    Dodano po 2 [godziny] 46 [minuty]:

    WItam.
    Temat jednak się nie kończy
    Gdy drukuję etykietę na \\Ivos-2-PC\DYMO LabelWrier 450 a potem robię wydruk na drukarce domyślnej są problemy ponieważ ustawienia wydruku są niewłaściwe. A jak ustawię pierwszy wydruk na domyślnej a potem drukuję etykietę to wychodzi źle wtykieta.
    Myślę że jednak musi być napisane makro które ustawia opcje wydruku w obu drukarkach.
    Pewno ten kod (duży) który wcześniej wkleiłem by się nadawał ale nie wiem gdzie wpisać drukarkę.
    Proszę o jakieś sugestie.
    Dziękuję.

    0
  • Pomocny post
    #9 24 Lis 2017 12:56
    JRV
    Specjalista - VBA, Excel

    grzegorzchm napisał:
    nie wiem gdzie wpisać drukarkę

    Masz tam tylko jednu linije z 'PrintOut'

    0
  • #10 24 Lis 2017 15:07
    grzegorzchm
    Poziom 8  

    Dzięki za pomoc.
    Wycofałem się jednak z tego projektu.
    Excel mimo ustawień i tak zmienia parametry wydruku wykorzystując wcześniejsze.
    Dodatkowo nie pisałem ale wydruk arkusza chciałem aby był dupleks. I to już wydaje niemożliwe do realizacji przez excel, vba.
    Jeżeli macie jeszcze jakieś pomysły to będę wdzięczny a jak nie to przyjdzie mi dalej opisywać kartony markerem.
    Pozdrawiam.
    Miłego dnia.

    0
  • #11 25 Lis 2017 17:18
    clubs
    Poziom 32  

    grzegorzchm napisał:
    Gdy drukuję etykietę na \\Ivos-2-PC\DYMO LabelWrier 450 a potem robię wydruk na drukarce domyślnej są problemy ponieważ ustawienia wydruku są niewłaściwe. A jak ustawię pierwszy wydruk na domyślnej a potem drukuję etykietę to wychodzi źle wtykieta.

    Witam
    Ustaw printarea dla drukarki sieciowej i dla drugiej osobno

    0
  • #12 25 Lis 2017 17:23
    grzegorzchm
    Poziom 8  

    Możesz coś więcej napisać, nie rozumiem

    0
  • #13 25 Lis 2017 17:37
    clubs
    Poziom 32  

    np dla A1

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #14 26 Lis 2017 06:20
    grzegorzchm
    Poziom 8  

    Mam tak zrobione ale jednak nie działa to właściwie.
    Problem jest dość złożony. Wydaje mi się że excel przy wydruku etykiety korzysta z ustawień jak przy wydruku arkusza. Drukowany tekst jest bardzo mały. Poniżej kod.

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #15 26 Lis 2017 10:32
    clubs
    Poziom 32  

    Witam
    Rozumiem ze ten zakres "Klient_druk" odpowiada

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    ?

    0
  • #16 27 Lis 2017 12:01
    grzegorzchm
    Poziom 8  

    Tak. Dokładnie tak jest. Makro było nagrane.

    0
  • #17 27 Lis 2017 17:35
    clubs
    Poziom 32  

    clubs napisał:
    Drukowany tekst jest bardzo mały

    Witam
    Można go zwiększyć przez rozmiar czcionki lub podbić %
    Generalnie do takich zadań najlepszy jest access można świetnie robić raporty druku

    0
  • #18 28 Lis 2017 09:30
    grzegorzchm
    Poziom 8  

    Tak access, ale jak już ma się postawione większość firmy na excelu to ciężko to zmienić.
    Może kiedyś ...
    A co rozmiaru czcionki to próbowałem i gdy etykieta wychodzi dobrze to z kolei źle wychodzi wydruk arkusza.
    I nie mam już pomysłu...
    Pozdrawiam.

    0
  • #19 28 Lis 2017 16:54
    clubs
    Poziom 32  

    grzegorzchm napisał:
    A co rozmiaru czcionki to próbowałem i gdy etykieta wychodzi dobrze to z kolei źle wychodzi wydruk arkusza

    Witam
    Etykietę masz w zakresie Range("AS7:AU9")?
    a reszta danych to jaki zakres?
    No chyba że możesz dołączyć jakiś przykładowy plik

    0
  • #20 28 Lis 2017 18:09
    grzegorzchm
    Poziom 8  

    Tak, dołączę plik arkusza zamówień jutro rano. To taka aplikacja obsługująca zamówienia. Jest tam rozwiązań które znalazłem na forum.

    Wstawiam plik. Jest to wersja robocza.
    Chciałbym aby w arkuszu chłodnia_1 do 3 można było drukować arkusz z obszaru wydruku na drukarce lexmark (2 strony dupleks) a komórki AS7:AU9 na drukarce dymo etykieta. Plik jest udostępniany w sieci i trzy osoby pracują jednocześnie na arkuszu Chłodnia_1 do Chłodnia_3

    0
  • #21 29 Lis 2017 20:10
    clubs
    Poziom 32  

    Witam
    Zobacz tak

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #22 29 Lis 2017 20:58
    grzegorzchm
    Poziom 8  

    Dziękuję za kody, jutro rano sprawdzę w pracy.


    Niestety nie działa.
    Widzę że excel nie może sobie poradzić z zmianą parametrów wydruku.
    Nie zmienia drukarki i informuje o błędzie rozmiaru papieru.
    Jak ręcznie zmienię drukarkę to wtedy idzie wydruk właściwie.
    Potrzebny jest taki kod który najpierw zmienia drukarkę a potem dostosowuje opcje wydruku do drukarki a następnie drukuje.

    Czy jest taki kod który najpierw zmienia drukarkę ?

    0
  • #23 30 Lis 2017 17:35
    clubs
    Poziom 32  

    Witam
    Zobacz teraz

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #24 01 Gru 2017 07:52
    grzegorzchm
    Poziom 8  

    Witam.
    Makro zatrzymuje się w miejscu:
    Application.ActivePrinter = "\\IVOS-2-PC\DYMO LabelWriter 450"
    excel vba drukowanie na dwóch drukarkach
    I taka sama sytuacja jest z drukarką Lexmark xm7155
    Pozdrawiam.

    0
  • #25 01 Gru 2017 17:37
    clubs
    Poziom 32  

    Witam
    Brakuje coś w nazwie drukarki powinno być jeszcze coś ala np. "na Ne01:"
    Ustaw tego lexmarka jako domyśla i uruchom te makro zobacz jaką nazwę pokaże (to samo zrób z tym dymo label)

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #26 05 Gru 2017 10:11
    grzegorzchm
    Poziom 8  

    Zrobiłem tak jak napisałeś, lecz to nie wpłynęło problem.
    Drukarka nie jest zmieniana. excel chce wydrukować arkusz na etykiecie a etykieta na drukarce sieciowej Lexmark.
    To dziwne że excel nie radzi sobie z tak prostym (tak mi się wydawało ) problemem.
    Jeżeli ktoś ma jeszcze jakieś pomysły to proszę o informację.

    0
  • #27 05 Gru 2017 17:44
    clubs
    Poziom 32  

    Zainstalowałem druga drukarkę i u mnie bez problemu zmienia drukarki jaki i ustawienia stron
    A dalej masz błąd przy Application.ActivePrinter?

    0
  • #28 07 Gru 2017 10:02
    grzegorzchm
    Poziom 8  

    Tak,
    mam problem, nie wiem zasadniczo gdzie szukać rozwiązania.
    A ty zainstalowałeś drukarkę do etykiet czy zwykłą?
    Czy w czasie wydruku masz zmianę formatu strony? U mnie zmienia się strona z A5 na 11352 (etykieta).
    Jak zaczynam od wydruku arkusza to idzie dobrze a przy przejściu na drukarkę etykiet mam błąd jak na zdjęciu.

    0
  • Pomocny post
    #29 07 Gru 2017 17:30
    clubs
    Poziom 32  

    Witam
    Bo nie zmienia ci drukarki (usunięty masz wpis Application.ActivePrinter) skopiuj makro i zobacz

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #30 08 Gru 2017 08:48
    grzegorzchm
    Poziom 8  

    WItam.
    Musiałem makro trochę zmodyfikować ale działa. Mam teraz dwa działające makra uruchamiane jedno po drugim i wydruk wygląda jak chciałem.
    Jedyny problem to to że cała procedura trwa długo. Wszystko ponad 10 sekund. Poniżej wkleję oba makra może uda się coś skrócić żeby makro działało szybciej.

    Sub drukuj_etykiete_nowe()
    Application.DisplayAlerts = False
    domyslna = Application.ActivePrinter
    Application.ActivePrinter = "\\IVOS-2-PC\DYMO LabelWriter 450 na Ne07:"
    With ActiveSheet.PageSetup
    .PrintArea = "AS7:AU9"
    .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
    .LeftMargin = Application.InchesToPoints(3.93700787401575E-02)
    .RightMargin = Application.InchesToPoints(3.93700787401575E-02)
    .TopMargin = Application.InchesToPoints(3.93700787401575E-02)
    .BottomMargin = Application.InchesToPoints(3.93700787401575E-02)
    .HeaderMargin = Application.InchesToPoints(0.078740157480315)
    .FooterMargin = Application.InchesToPoints(0)
    .PrintHeadings = False
    .PrintGridlines = False
    .PrintComments = xlPrintNoComments
    .CenterHorizontally = False
    .CenterVertically = False
    .Orientation = xlPortrait
    .Draft = False
    .PaperSize = 171
    .FirstPageNumber = xlAutomatic
    .Order = xlDownThenOver
    .BlackAndWhite = True
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = 1
    .PrintErrors = xlPrintErrorsDisplayed
    .OddAndEvenPagesHeaderFooter = False
    .DifferentFirstPageHeaderFooter = False
    .ScaleWithDocHeaderFooter = True
    .AlignMarginsHeaderFooter = True
    .EvenPage.LeftHeader.Text = ""
    .EvenPage.CenterHeader.Text = ""
    .EvenPage.RightHeader.Text = ""
    .EvenPage.LeftFooter.Text = ""
    .EvenPage.CenterFooter.Text = ""
    .EvenPage.RightFooter.Text = ""
    .FirstPage.LeftHeader.Text = ""
    .FirstPage.CenterHeader.Text = ""
    .FirstPage.RightHeader.Text = ""
    .FirstPage.LeftFooter.Text = ""
    .FirstPage.CenterFooter.Text = ""
    .FirstPage.RightFooter.Text = ""
    End With
    ActiveSheet.PrintOut Copies:=1
    Application.ActivePrinter = domyslna
    End Sub

    Sub drukuj_chlodnia1()

    Dim STDprinter As String

    STDprinter = "\\IVOS-2-PC\DYMO LabelWriter 450 na Ne07"

    With ActiveSheet.PageSetup
    .PrintArea = "A8:P28,A33:P53"
    .PrintHeadings = False
    .PrintGridlines = False
    .CenterHorizontally = False
    .CenterVertically = False
    .Orientation = xlPortrait
    .Draft = False
    .PaperSize = xlPaperA5
    .FirstPageNumber = xlAutomatic
    .Order = xlDownThenOver
    .BlackAndWhite = True
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = 1
    End With
    ActiveSheet.PrintOut Copies:=1, ActivePrinter:="Lexmark xm7155 na Ne03"
    End Sub

    Na tę chwilę serdecznie dziękuję za pomoc w rozwiązaniu mojego problemu.

    0