Drukowanie etykiet z arkusza calc

Użytkowanie arkusza kalkulacyjnego

Drukowanie etykiet z arkusza calc

Postprzez Maxbert » Cz gru 27, 2018 3:50 pm

Witam,

proszę o udzielenie odpowiedzi czy możliwe jest a jeśli tak to proszę o pomoc w napisaniu makra dla poniższej konfiguracji:
W polu B1 Baza.ods wpisuję poszukiwany rekord z bazy danych.
Pliki z etykietami A i B powiązane są łączami DDE z Baza.ods.
Makro pod przyciskami z arkusza Baza.ods powinno wydrukować
- etykietę A na drukarce zebra1 w ilości zapisanej w komórce B12
- etykietę B na drukarce zebra2 w ilości zapisanej w komórce B13

Najbardziej zależy mi na komendzie makro wywołanym z pliku baza.ods i drukującym odpowiednią etykietę w podanej w arkuszu ilości sztuk.

PZDR
MG
Załączniki
EtykietaB.odt
(11.76 KiB) Pobrane 4 razy
EtykietaA.odt
(12.04 KiB) Pobrane 3 razy
Baza.ods
(12.56 KiB) Pobrane 4 razy
OpenOffice 4.1.6 na Windows 10
Maxbert
 
Posty: 18
Dołączył(a): Cz wrz 14, 2017 12:29 pm

Re: Drukowanie etykiet z arkusza calc

Postprzez Jermor » Cz gru 27, 2018 4:32 pm

Myślę, że zadanie jest niepotrzebnie komplikowane. Po co drukować etykiety za pomocą Writera przenosząc dane do oddzielnych dokumentów, skoro można to zrobić bezpośrednio z arkusza. Np dodając dwa nowe arkusze nazwane choćby "Zebra 1" i "Zebra 2" a zawierające układ drukowanych etykiet, bez zbędnych w tym przypadku pól DDE.
AOO 4.1.6, LO 6.1.3 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że ktoś podał rozwiązanie.
Jermor
 
Posty: 563
Dołączył(a): So paź 12, 2013 11:09 am

Re: Drukowanie etykiet z arkusza calc

Postprzez Maxbert » Śr sty 02, 2019 12:02 pm

Dziękuję za radę. Postanowiłem więc podążać zasugerowaną w odpowiedzi drogą ale napotkałem inne problemy z którymi nie potrafię sobie poradzić.
Załączam przerobiony plik Baza.ods. Poza arkuszami "ekran kontrolny" i "baza danych" zawiera arkusze ze wzorcowymi etykietami. Pod klawiszami umieściłem makra oddzielnie dla każdej z drukarek. Dla czytelności na ekranie wypisuję aktualne ustawienia.
Problemem jest to że pomimo że ustawiam format papieru na "user" + jego oczekiwane wymiary to niestety ustawienie "PaperFormat" i "PaperSize" raczej nie odnosi się do ustawień formatu strony ( Format-> Strona) ponieważ nic się tam nie zmienia.
Próba ręcznego ustawienia formatu strony kończy się tym że po wykonaniu makra zakres do wydruku jest poszatkowany w sposób: jedna komórka = jedna strona do wydruku, a wymiary 1,9x0,63cm zupełnie nie wiem skąd się wzięły
Ekran ustawienia strony.PNG

Pytanie więc jak makrem zmienić ustawienia format i wymiarów strony?

PZDR
MG
Załączniki
Ekran ustawienia drukarki.PNG
Baza.ods
(15.67 KiB) Pobrane 3 razy
OpenOffice 4.1.6 na Windows 10
Maxbert
 
Posty: 18
Dołączył(a): Cz wrz 14, 2017 12:29 pm

Re: Drukowanie etykiet z arkusza calc

Postprzez Jermor » Śr sty 02, 2019 10:55 pm

Drukowanie w Calcu przebiega następująco:
Jeżeli w skoroszycie zdefiniowano obszar wydruku (lub kilka takich obszarów) to polecenie drukowania drukuje ten obszar a następnie kolejne jeśli istnieją.
Jeżeli nie zdefiniowano żadnych nazw to można wydrukować wszystkie arkusze skoroszytu, zaznaczone arkusze albo zaznaczone obszary.
Ponieważ utworzyłeś oddzielne arkusze dla etykiet A i B to możesz wskazując arkusz EtykietaA żądać wydrukowania go w całości, bez zaznaczania obszaru wydruku. I tak zostanie wydrukowany tylko zakres do dolnego prawego rogu zajętego przez dane.
Moim zdaniem powinieneś utworzyć nowy styl strony, nadając mu nazwę np. "Etykieta" i ustalając wymiar 7x3,5cm, marginesy na poziomie 0,2 cm, wyłączając nagłówki i stopki oraz tryb skalowania na "Dopasuj zakresy wydruku do szerokości/wysokości" na 1 stronie.
Przypisz ten format strony do arkusza "EtykietaA" i "EtykietaB". Od teraz możesz drukować cały arkusz bez zaznaczania obszarów wydruku.
AOO 4.1.6, LO 6.1.3 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że ktoś podał rozwiązanie.
Jermor
 
Posty: 563
Dołączył(a): So paź 12, 2013 11:09 am

Re: Drukowanie etykiet z arkusza calc

Postprzez Maxbert » Wt sty 08, 2019 11:45 am

Dzięki to dobre rady. Niestety nie mogę znaleźć informacji jaką komendą makro określić numer strony całego dokumentu który chcę wydrukować.
Oczywiście znalazłem sposób na drukowanie konkretnych stron tj. np.
oPrinter(2).Name = "Pages" : oPrinter(2).Value = "1-3"
tyle tylko że ze standardowymi ustawieniami dotyczy to aktualnego arkusza a nie całego dokumentu
Potrzebuję wiedzieć jak programowo przestawić ustawienie z "aktualnego arkusza" na "wszystkie arkusze" ?

PS. wiem że można zmienić ustawienie w opcjach opcje-openOfficeCalc-Drukowanie-"Drukuj tylko zaznaczone arkusze" ale będzie to dotyczyło wszystkich dokumentów a nie tego konkretnego
OpenOffice 4.1.6 na Windows 10
Maxbert
 
Posty: 18
Dołączył(a): Cz wrz 14, 2017 12:29 pm

Re: Drukowanie etykiet z arkusza calc

Postprzez Jermor » Wt sty 08, 2019 7:27 pm

Czegoś nie zrozumiałem? Według mnie musisz wydrukować wybraną ilość kopii jednej strony arkusza EtykietaA albo EtykietaB.
Arkusze zawierają tylko to co ma zostać wydrukowane na etykiecie. Jak wspomniałem, jeśli wybierzesz ten jeden arkusz i zlecisz jego wydruk, to zostanie wydrukowana jedna etykieta, bo tylko tyle danych jest w arkuszu. Musisz wskazać ile kopii ma zostać powtórzonych.
Do wydrukowania wybranego arkusza podaje ci makro. Nie jest mojego autorstwa. Przerobiłem je tylko tak aby parametrem procedury była nazwa arkusza jaki ma zostać wydrukowany. Po wydrukowaniu następuje powrót do arkusza pierwszego.
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Sub PrintSpecificSheet (sArk as String)
Rem Procedura drukuje wybrany arkusz   
Dim oSheetToPrint as Object
Dim oSheetToReturnTo as Object
oSheetToPrint = ThisComponent.Sheets.getByName(sArk)   
oSheetToReturnTo = ThisComponent.Sheets.getByIndex(0)
ThisComponent.currentController.setActiveSheet(oSheetToPrint)
ThisComponent.Print(Array())
Wait 100
ThisComponent.currentController.setActiveSheet(oSheetToReturnTo)
End Sub

Możesz rozbudować makro (dodając parametry: ile kopii etykiety i rodzaj drukarki)i wykorzystać je do drukowania zarówno etykiety A jak i B.
AOO 4.1.6, LO 6.1.3 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że ktoś podał rozwiązanie.
Jermor
 
Posty: 563
Dołączył(a): So paź 12, 2013 11:09 am

Re: Drukowanie etykiet z arkusza calc

Postprzez Jermor » Wt sty 08, 2019 8:41 pm

Znalazłem jeszcze te parametry do drukowania
oPrint(0).Name="CopyCount"
oPrint(0).Value=ile kopii
AOO 4.1.6, LO 6.1.3 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że ktoś podał rozwiązanie.
Jermor
 
Posty: 563
Dołączył(a): So paź 12, 2013 11:09 am

Re: Drukowanie etykiet z arkusza calc

Postprzez Maxbert » Wt sty 08, 2019 9:23 pm

Wszystko dobrze zrozumiałeś. Makro mam dokładnie tak działać jak napisałeś. Sprawdziłem zaproponowane makro no i ono działa ale...
Makro na chwilę przełącza aktywny arkusz i pokazuje arkusz z zawartością etykiety. Nie pomaga ukrycie arkusza etykiety i za-hasłowanie dokumentu.
Chciałbym wydrukować etykietę przez przełączania aktywnego arkusza czyli tak jak to można zrobić manualnie z menu ustawiając:
Załączniki
druk.PNG
druk.PNG (5 KiB) Przeglądane 50 razy
OpenOffice 4.1.6 na Windows 10
Maxbert
 
Posty: 18
Dołączył(a): Cz wrz 14, 2017 12:29 pm

Re: Drukowanie etykiet z arkusza calc

Postprzez Jermor » Śr sty 09, 2019 11:58 am

Wybór opcji "Wszystkie arkusze" oznacza wydruk wszystkich arkuszy, czyli w twoim przypadku: "ekran kontrolny", "baza danych", "EtykietaA" i "EtykietaB" a przy tych parametrach (strony = 1) ma zostać wydrukowana tylko pierwsza strona i to nie każdego arkusza, tylko pierwsza ze wszystkich.
Jeszcze raz o zasadach drukowania:
Jeżeli w arkuszu określono zakresy wydruku, to ustawienia, które pokazujesz na ilustracji są następujące: Gdy zaznaczono "Wszystkie arkusze" - drukowane są wszystkie określone zakresy wydruku, przy czym każdy zakres generuje nową stronę. Gdy zaznaczono "Zaznaczone arkusze" - drukowane są tylko te zakresy drukowania, które znajdują się w zaznaczonych arkuszach (arkusz aktywny jest traktowany jako arkusz zaznaczony). Gdy wybrano opcję "Zaznaczone komórki" to drukowane są zaznaczone komórki. Jak to wykorzystać?
Są dwie możliwości.
Pierwsza: procedura najpierw usuwa wszystkie zakresy drukowania, następnie definiuje ten zakres, który ma być wydrukowany, wybiera drukarkę, ustala liczbę kopii i drukuje. Użyta opcja "Wszystkie arkusze".
Druga: Ustalasz dwa zakresy drukowania o nazwie np "Zebra1" i "Zebra2", następnie procedura drukuje albo stronę numer 1 albo stronę nr 2 tyle razy ile to jest potrzebne. Można tak zrobić bo zawsze zakres drukowania zaczyna się od nowej strony a każda etykieta zajmuje jedna stronę.
Gdy nie ma określonych zakresów drukowania, decydują tylko parametry wspomnianego okienka. Arkusze drukowane są od komórki A1 do ostatniej, prawej, dolnej komórki. Ponieważ arkusze etykiet są dopasowane do wielkości strony, nie ma potrzeby określać zakresu wydruku. Wystarczy wydrukować potrzebny arkusz, ale trzeba przy tym ustalić opcję "Zaznaczone arkusze". Podana przeze mnie procedura uaktywnia arkusz, który ma zostać wydrukowany a to oznacza, że musi się on na ten czas pojawić na ekranie. Dlatego procedura zawiera instrukcję powrotu do wybranego arkusza.
Ten sposób drukowania nie przeszkadza w drukowaniu innych arkuszy, np. bazy danych.
AOO 4.1.6, LO 6.1.3 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że ktoś podał rozwiązanie.
Jermor
 
Posty: 563
Dołączył(a): So paź 12, 2013 11:09 am


Powrót do Calc

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 4 gości