Przycisk "Drukuj"
Przycisk "Drukuj"
Witam, w jaki sposób mogę wywołać makro, które za pomocą przycisku, otworzy okno dialogowe drukowania, z uwzględnieniem zakresu komórek które będą wynikały ze zmiennych zawartych w makro ?
Mam na myśli to, że będzie kilka przycisków, gdzie jeden będzie drukował cały arkusz, inny tylko określoną jego część ( np tabele która znajduje się w zakresie komórek)
Mam na myśli to, że będzie kilka przycisków, gdzie jeden będzie drukował cały arkusz, inny tylko określoną jego część ( np tabele która znajduje się w zakresie komórek)
Win 10
LibreOffice 7.1.3.2 x64
LibreOffice 7.1.3.2 x64
Re: Przycisk "Drukuj"
Musisz włączyć tryb projektu (Narzędzia -> Formularze -> Tryb projektu)
Klikasz prawym przyciskiem myszy na przycisku i wybierasz z menu kontekstowego "Właściwości formantu".
Wybierasz zakładkę "Wydarzenia".
Odnajdujesz zdarzenie, jakie ma nastąpić, aby makro zostało uruchomione. Po prawej stronie znajduje się przycisk z wielokropkiem. Klikasz go.
W nowym oknie dialogowym zaznaczony jest już twój wybór zdarzenia. Klikasz przycisk "Makro" i wybierasz to, które ma zostać przypisane.
Teraz musisz wyłączyć tryb projektu, bo w przeciwnym razie każde kliknięcie przycisku zaznaczy go tylko znacznikami obiektu.
Klikasz prawym przyciskiem myszy na przycisku i wybierasz z menu kontekstowego "Właściwości formantu".
Wybierasz zakładkę "Wydarzenia".
Odnajdujesz zdarzenie, jakie ma nastąpić, aby makro zostało uruchomione. Po prawej stronie znajduje się przycisk z wielokropkiem. Klikasz go.
W nowym oknie dialogowym zaznaczony jest już twój wybór zdarzenia. Klikasz przycisk "Makro" i wybierasz to, które ma zostać przypisane.
Teraz musisz wyłączyć tryb projektu, bo w przeciwnym razie każde kliknięcie przycisku zaznaczy go tylko znacznikami obiektu.
AOO 4.1.15, LO 24.8.2 (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 istnieje jego rozwiązanie.
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 istnieje jego rozwiązanie.
Re: Przycisk "Drukuj"
Źle mnie zrozumiałeś. Poszukuję metody wywołania okna druku, zadając odpowiednie parametry druku, zawarte w procedurze w makro
Win 10
LibreOffice 7.1.3.2 x64
LibreOffice 7.1.3.2 x64
Re: Przycisk "Drukuj"
Ale makro masz już napisane? Mógłbyś udostępnić?
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Przycisk "Drukuj"
To teraz ja nie rozumiem. Skoro masz już w makro wszystkie dane, to po co ci okno druku. Wykonaj po prostu ThisComponent.Print(Array()).
AOO 4.1.15, LO 24.8.2 (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 istnieje jego rozwiązanie.
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 istnieje jego rozwiązanie.
Re: Przycisk "Drukuj"
Wykonuję, nie działa. Zależy mi na przycisku które uruchomi makro, które uruchomi okno dialogowe drukowania, z ustawionymi już parametrami w makrze. ( druk dwustronny, zakres komórek itp itd. )
mam na myśli uruchomienie tego okna :
mam na myśli uruchomienie tego okna :
Win 10
LibreOffice 7.1.3.2 x64
LibreOffice 7.1.3.2 x64
Re: Przycisk "Drukuj"
W poleceniu ThisComponent.Print(Array()) tablica Array reprezentuje opcje drukowania, jeśli jest pusta, to do drukowania przyjęte są ustawienia standardowe. W tej tablicy możesz ustalić opcje drukowania. Oto one
Collate -> sortowanie stron (True or False).
CopyCount -> Liczba kopii.
DuplexMode -> wykorzystuje stałe com.sun.star.view.DuplexMode. Mogą to być: UNKNOWN (0), OFF (1), LONGEDGE (2), and SHORTEDGE (3).
FileName -> Transfer do pliku zamiast do drukarki.
Pages -> Wykaz stron do drukowania, jako tekst, jaki wpisujesz w oknie drukowania, np "1-3;14".
Wait -> jeśli TRUE, drukowanie jest synchroniczne, oczekuje, aż zadanie się zakończy.
Ustawianie opcji np. tak (rozmiar tablicy zależy od ilości wprowadzanych danych):
a wywołanie drukowania ThisComponent.Print(opcje())
Opcje takie jak format strony ułożenie wydruku, rozmiar papieru czy nawet wybór drukarki ustala się w innym miejscu jako właściwości drukarki. Jest to także tablica zgodna z new com.sun.star.beans.PropertyValue.
W końcu obszary drukowania ustala się w samym arkuszu w taki sposób (wymiar tablicy informuje o liczbie obszarów do drukowania):
Collate -> sortowanie stron (True or False).
CopyCount -> Liczba kopii.
DuplexMode -> wykorzystuje stałe com.sun.star.view.DuplexMode. Mogą to być: UNKNOWN (0), OFF (1), LONGEDGE (2), and SHORTEDGE (3).
FileName -> Transfer do pliku zamiast do drukarki.
Pages -> Wykaz stron do drukowania, jako tekst, jaki wpisujesz w oknie drukowania, np "1-3;14".
Wait -> jeśli TRUE, drukowanie jest synchroniczne, oczekuje, aż zadanie się zakończy.
Ustawianie opcji np. tak (rozmiar tablicy zależy od ilości wprowadzanych danych):
Kod: Zaznacz cały
Dim opcje(1) as new com.sun.star.beans.PropertyValue
opcje(0).Name="CopyCount" : opcje(0).Value=3
opcje(1).Name="Pages" : opcje(1).Value="1"
Opcje takie jak format strony ułożenie wydruku, rozmiar papieru czy nawet wybór drukarki ustala się w innym miejscu jako właściwości drukarki. Jest to także tablica zgodna z new com.sun.star.beans.PropertyValue.
W końcu obszary drukowania ustala się w samym arkuszu w taki sposób (wymiar tablicy informuje o liczbie obszarów do drukowania):
Kod: Zaznacz cały
Dim oDodruku(0) As New com.sun.star.table.CellRangeAddress
oDodruku(0).Sheet = 0 'Pierwszy arkusz skoroszytu
oDodruku(0).StartColumn = 0 : oDodruku(0).StartRow = 0 'komórka A1
oDodruku(0).EndColumn = 6 : oDodruku(0).EndRow = 15 'komórka G16
...
ThisComponent.CurrentController.getActiveSheet().setPrintAreas(oDodruku())
AOO 4.1.15, LO 24.8.2 (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 istnieje jego rozwiązanie.
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 istnieje jego rozwiązanie.
Re: Przycisk "Drukuj"
U mnie nie wyświetla tego okna druku tylko od razu drukuje z zadanymi parametrami.
Win 10
LibreOffice 7.1.3.2 x64
LibreOffice 7.1.3.2 x64
Re: Przycisk "Drukuj"
Nagrane makro:
wywołuje okno druku
Kod: Zaznacz cały
sub drukuj
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Print", "", 0, Array())
end sub
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP