Przycisk "Drukuj"

Użytkowanie arkusza kalkulacyjnego
Altaro
Posty: 37
Rejestracja: czw paź 26, 2023 10:13 am

Przycisk "Drukuj"

Post autor: Altaro »

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)
Win 10
LibreOffice 7.1.3.2 x64
Awatar użytkownika
Jermor
Posty: 2361
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Przycisk "Drukuj"

Post autor: Jermor »

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.
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.
Altaro
Posty: 37
Rejestracja: czw paź 26, 2023 10:13 am

Re: Przycisk "Drukuj"

Post autor: Altaro »

Ź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
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Przycisk "Drukuj"

Post autor: Rafkus »

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
Awatar użytkownika
Jermor
Posty: 2361
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Przycisk "Drukuj"

Post autor: Jermor »

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.
Altaro
Posty: 37
Rejestracja: czw paź 26, 2023 10:13 am

Re: Przycisk "Drukuj"

Post autor: Altaro »

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 :
3.PNG
3.PNG (22.69 KiB) Przejrzano 1111 razy
Win 10
LibreOffice 7.1.3.2 x64
Awatar użytkownika
Jermor
Posty: 2361
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Przycisk "Drukuj"

Post autor: Jermor »

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):

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"
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):

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.
Altaro
Posty: 37
Rejestracja: czw paź 26, 2023 10:13 am

Re: Przycisk "Drukuj"

Post autor: Altaro »

U mnie nie wyświetla tego okna druku tylko od razu drukuje z zadanymi parametrami.
Win 10
LibreOffice 7.1.3.2 x64
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Przycisk "Drukuj"

Post autor: Rafkus »

Nagrane makro:

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
wywołuje okno druku
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
ODPOWIEDZ