[SOLVED] Makro - dzisiejsza Data jak wpisać we Writer

Użytkowanie edytora dokumentów
open
Posty: 65
Rejestracja: śr lis 06, 2013 4:31 am

[SOLVED] Makro - dzisiejsza Data jak wpisać we Writer

Post autor: open »

.
Witam,

jaką funkcją czy skrótem wpisać dzisiejszą DATĘ aby była widoczna tak jakbym wpisał ją z palca ? Chodzi mi oto, aby nie była to funkcja pole Data (stała) bo jest WYRÓŻNIONA NA SZARO i nie aktualizowała się jak funkcja Data.

Nie mogę wyłączyć szarego wyróżnienia pola funkcją Cieniowanie Pól (Ctrl+F8) ponieważ inne pola w dokumencie muszę mieć zacieniowane (wyróżnione na szaro)

Próbowałem tak jak w Calc skrótem Ctrl+; ale to nie działa we Writer.

Sprawa wydaje się prozaiczna, ale ja nie mogę się dokopać do znalezienia odpowiedniej funkcji czy skrótu.

Uprzejmie proszę światłych ludzi o pomoc.

Pozdrawiam Was.
Ostatnio zmieniony czw sty 30, 2020 10:01 pm przez open, łącznie zmieniany 2 razy.
LibreOffice 7.5.0.3 Win10
Awatar użytkownika
Jermor
Posty: 2239
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: dzisiejsza Data jak wpisać we Writer

Post autor: Jermor »

Wgraj sobie załączone makro do biblioteki "Standard" w kontenerze "Moje makra".
W Writerze przejdź do "Narzędzia -> Dostosuj... -> Klawiatura", upewnij się, że definiujesz skrót tylko dla Writera i przypisz to makro do skrótu CTRL+;

Kod: Zaznacz cały

sub wstaw_date
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
dim teraz as string
teraz=date
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = teraz & " "
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
end sub
AOO 4.1.15, LO 7.5.9 (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.
open
Posty: 65
Rejestracja: śr lis 06, 2013 4:31 am

Re: dzisiejsza Data jak wpisać we Writer

Post autor: open »

.
Dzień Dobry
Mistrzu Jermor powyższe makro działa. Wymagało wgrania JRE.
Serdeczne PODZIĘKOWANIE dla Ciebie za pomoc.
Jestem zaskoczony, że Writer nie ma wbudowanej takiej oczywistej funkcji.

Nie wiem czy w dobrym miejscu wkleiłem to makro ?
Wstawiam lokalizację makra i proszę o opinię czy jest gdzie trzeba.
lokalizacja_makra_wstaw_date.jpg
Pozdrawiam.
Ostatnio zmieniony ndz sty 26, 2020 8:40 pm przez open, łącznie zmieniany 1 raz.
LibreOffice 7.5.0.3 Win10
Awatar użytkownika
Jermor
Posty: 2239
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: dzisiejsza Data jak wpisać we Writer

Post autor: Jermor »

Miejsce jest dobre. Makro będzie działało w każdym dokumencie Writera otwartym w twoim komputerze. Jeśli miałoby działać także gdzie indziej, to wystarczy je wkopiować, tak jak to zrobiłeś.
Biblioteka Standard kontenera Moje makra jest zawsze ładowana z otwartymi dokumentami LibreOffice (lub Apache OpenOffice z jego kontenera) w związku z czym wywołanie makra jest bezproblemowe.
Tak naprawdę to makro jest wynikiem nagrania makra wstawiającego jakiś dowolny tekst a następnie dodanie dwóch linijek z instrukcjami i zamianie tego co wpisuje się do pola Value.
Takie nienagrywane makro może wyglądać np tak:

Kod: Zaznacz cały

sub Wstaw_date
Dim oDoc As Object
Dim oText As Object
Dim oVCurs As Object
Dim oTCurs As Object
oDoc = ThisComponent
oText = oDoc.Text
oVCurs = oDoc.CurrentController.getViewCursor()
oTCurs = oText.createTextCursorByRange(oVCurs.getStart())
oText.insertString(oTCurs, date & " ", FALSE)
end sub
AOO 4.1.15, LO 7.5.9 (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.
open
Posty: 65
Rejestracja: śr lis 06, 2013 4:31 am

Re: dzisiejsza Data jak wpisać we Writer

Post autor: open »

.
Serdecznie Dziękuję. Posunęliśmy świat do przodu.

Zamykamy.
.
LibreOffice 7.5.0.3 Win10
open
Posty: 65
Rejestracja: śr lis 06, 2013 4:31 am

Re: [SOLVED] Makro - dzisiejsza Data jak wpisać we Writer

Post autor: open »

.
Witam jeszcze raz.

Powyższe makro wstawia datę w postaci 02.02.2020

Potrzebuję jeszcze dwa osobne makra wstawiające daty z kreskami :

02-02-2020 oraz

2020-02-02

(może kiedyś pojawią się takie funkcje ?)

Pozdrawiam.
LibreOffice 7.5.0.3 Win10
Awatar użytkownika
Jermor
Posty: 2239
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: [SOLVED] Makro - dzisiejsza Data jak wpisać we Writer

Post autor: Jermor »

Jeśli mają to być odrębne makra to skopiuj to, które masz, nadając kopiom oczywiście różne nazwy.
Jeśli korzystasz z tego pierwszego przykładu, to w miejsce instrukcji teraz=date wpisz
teraz=Format(date,"YYYY-MM-DD")
w pierwszej kopii, gdy data ma być w postaci 2020-02-03 i
teraz=Format(date,"DD-MM-YYYY")
gdy postać daty ma być 03-02-2020.
Jeżeli skorzystałeś z drugiej postaci makra, to zamiast instrukcji Date w przedostatniej linijce, wpisz z instrukcji pokazanych powyżej odpowiednie ciągi występujące po znaku równości.
AOO 4.1.15, LO 7.5.9 (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.
open
Posty: 65
Rejestracja: śr lis 06, 2013 4:31 am

Re: [SOLVED] Makro - dzisiejsza Data jak wpisać we Writer

Post autor: open »

.
Dzień Dobry,
Jermor pisze: ...Jeśli korzystasz z tego pierwszego przykładu, to w miejsce instrukcji teraz=date wpisz
teraz=Format(date,"YYYY-MM-DD")
w pierwszej kopii, gdy data ma być w postaci 2020-02-03 i
teraz=Format(date,"DD-MM-YYYY")
gdy postać daty ma być 03-02-2020.
Używam pierwszego przykładu. Wszystko pięknie zadziałało.

Mam makra na kolejne dwa formaty daty DD-MM-YYYY oraz YYYY-MM-DD

Pięknie dzięki Mistrzu Jermor.
LibreOffice 7.5.0.3 Win10
ODPOWIEDZ