Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

excel vba drukowanie na dwóch drukarkach

23 Nov 2017 20:15 3126 31
  • Level 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
  • Level 35  
    Witam

    W pierwszym makro dopisz
    Code: vbscript
    Log in, to see the code

    jak również w printout możesz zdefiniować nazwę drukarki
  • VBA, Excel specialist
    Mozesz zarejestrowac nakie makro?
  • Level 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.
  • VBA, Excel specialist
    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"
  • Level 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
    Code: vbscript
    Log in, to see the code


    Proszę o pomoc.
    Dzięki
  • Helpful post
    VBA, Excel specialist
    Code: vb
    Log in, to see the code


    Dodano po 2 [minuty]:

    zmien A1 nz AT9:AY9
  • Level 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ę.
  • Helpful post
    VBA, Excel specialist
    grzegorzchm wrote:
    nie wiem gdzie wpisać drukarkę

    Masz tam tylko jednu linije z 'PrintOut'
  • Level 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.
  • Level 35  
    grzegorzchm wrote:
    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
  • Level 9  
    Możesz coś więcej napisać, nie rozumiem
  • Level 35  
    np dla A1
    Code: vbscript
    Log in, to see the code
  • Level 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.

    Code: vbscript
    Log in, to see the code
  • Level 35  
    Witam
    Rozumiem ze ten zakres "Klient_druk" odpowiada
    Code: vbscript
    Log in, to see the code
    ?
  • Level 9  
    Tak. Dokładnie tak jest. Makro było nagrane.
  • Level 35  
    clubs wrote:
    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
  • Level 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.
  • Level 35  
    grzegorzchm wrote:
    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
  • Level 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
  • Level 35  
    Witam
    Zobacz tak
    Code: vbscript
    Log in, to see the code
  • Level 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ę ?
  • Level 35  
    Witam
    Zobacz teraz
    Code: vbscript
    Log in, to see the code
  • Level 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.
  • Level 35  
    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)
    Code: vbscript
    Log in, to see the code
  • Level 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ę.
  • Level 35  
    Zainstalowałem druga drukarkę i u mnie bez problemu zmienia drukarki jaki i ustawienia stron
    A dalej masz błąd przy Application.ActivePrinter?
  • Level 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.
  • Helpful post
    Level 35  
    Witam
    Bo nie zmienia ci drukarki (usunięty masz wpis Application.ActivePrinter) skopiuj makro i zobacz

    Code: vbscript
    Log in, to see the code
  • Level 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.