Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla 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

23 Lis 2017 20:15 2535 31
  • Poziom 9  
    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
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • Poziom 34  
    Witam

    W pierwszym makro dopisz
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    jak również w printout możesz zdefiniować nazwę drukarki
  • Specjalista - VBA, Excel
    Mozesz zarejestrowac nakie makro?
  • Poziom 9  
    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.
  • 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"
  • Poziom 9  
    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
  • Pomocny post
    Specjalista - VBA, Excel
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Dodano po 2 [minuty]:

    zmien A1 nz AT9:AY9
  • Poziom 9  
    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ę.
  • Pomocny post
    Specjalista - VBA, Excel
    grzegorzchm napisał:
    nie wiem gdzie wpisać drukarkę

    Masz tam tylko jednu linije z 'PrintOut'
  • Poziom 9  
    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.
  • Poziom 34  
    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
  • Poziom 9  
    Możesz coś więcej napisać, nie rozumiem
  • Poziom 34  
    np dla A1
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    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
  • Poziom 34  
    Witam
    Rozumiem ze ten zakres "Klient_druk" odpowiada
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    ?
  • Poziom 9  
    Tak. Dokładnie tak jest. Makro było nagrane.
  • Poziom 34  
    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
  • Poziom 9  
    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.
  • Poziom 34  
    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
  • Poziom 9  
    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
  • Poziom 34  
    Witam
    Zobacz tak
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    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ę ?
  • Poziom 34  
    Witam
    Zobacz teraz
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    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.
  • Poziom 34  
    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
  • Poziom 9  
    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ę.
  • Poziom 34  
    Zainstalowałem druga drukarkę i u mnie bez problemu zmienia drukarki jaki i ustawienia stron
    A dalej masz błąd przy Application.ActivePrinter?
  • Poziom 9  
    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.
  • Pomocny post
    Poziom 34  
    Witam
    Bo nie zmienia ci drukarki (usunięty masz wpis Application.ActivePrinter) skopiuj makro i zobacz

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    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.