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

Użytkowanie edytora dokumentów
open
Posty: 67
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: 2480
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.16 (tylko Win 10), LO 25.8 (x64) na: Win 11, 10, Linux (Mint)
Ważne!
Jeśli twój problem został rozwiązany, edytuj swój pierwszy post, dopisując w temacie [SOLVED].
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
open
Posty: 67
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: 2480
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.16 (tylko Win 10), LO 25.8 (x64) na: Win 11, 10, Linux (Mint)
Ważne!
Jeśli twój problem został rozwiązany, edytuj swój pierwszy post, dopisując w temacie [SOLVED].
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
open
Posty: 67
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: 67
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: 2480
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.16 (tylko Win 10), LO 25.8 (x64) na: Win 11, 10, Linux (Mint)
Ważne!
Jeśli twój problem został rozwiązany, edytuj swój pierwszy post, dopisując w temacie [SOLVED].
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
open
Posty: 67
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