Witam,
Posiadam dokument na 350 stron i potrzebuję na każdym dodać kolejną datę w formacie nazwa tygodnia, dzień, miesiąc, rok: np. Środa 02.01.2018, na kolejnej stronie w tym samym miejscu Czwartek 03.01.2018 itp aż do końca.
Czy jest na to jakiś zautomatyzowany sposób?
Pozdrawiam
Konrad
[SOLVED] Dodawanie kolejnej daty na każdej stronie
[SOLVED] Dodawanie kolejnej daty na każdej stronie
Ostatnio zmieniony ndz sty 27, 2019 6:06 pm przez Avesi, łącznie zmieniany 1 raz.
Libre office 6.1.3.2 Windows 10
Re: Dodawanie kolejnej daty na każdej stronie
Myślę, że zrobiłbym to mniej więcej tak:
- W Calc, za pomocą funkcji DATA.WARTOŚĆ wyliczyłbym wartość numeryczną daty początkowej [1] i wpisał ją w pierwszym polu kolumny [2].
- W kolejnych 350 polach zwiększałbym tę wartość o 1 [3].
- W sąsiedniej kolumnie umieściłbym funkcje wyliczające z tej wartości datę w porządanym formacie [4] i skopiował ją w kolejnych 350 polach.
- Tak utworzoną bazę wykorzystałbym jako podstawę do pól korespondencji seryjnej.
- LibreOffice wewnętrznie traktuje wartości daty i godziny jako wartości numeryczne. W przypadku przypisania do wartości daty lub godziny formatu "Liczba" wartość zostanie przekształcona na liczbę. Na przykład wartość "01.01.2000 12:00" zostanie przekształcona na liczbę 36526,5. Część całkowita liczby określa datę, natomiast część ułamkowa - godzinę. Jeśli taki typ reprezentacji numerycznej daty lub godziny nie jest odpowiedni, można odpowiednio zmienić format liczby (daty lub godziny). W tym celu należy zaznaczyć komórkę zawierającą wartość daty lub godziny, wyświetlić jej menu kontekstowe i wybrać pozycję Formatuj komórki. Zakładka Liczby zawiera funkcje służące do definiowania formatu liczb. Daty są obliczane jako odstępy od początkowego dnia zerowego. [Pomoc do "Funkcje daty i godziny"]
- Np. DATA.WARTOŚĆ("2018-12-23") wynosi 43457
- Np. 43457, 43458, 43459,...
- Np. ROK(43457) zwraca 2018
Re: Dodawanie kolejnej daty na każdej stronie
Ja także szanowny Asturze myślałem o korespondencji seryjnej. Nie jest to jednak jak sądzę dobry pomysł. Chyba, że...
No właśnie nic nie wiemy o dokumencie. Gdyby to był dokument jednostronicowy, to owszem jest to prosta metoda i szybka. Lecz Avesi pisze o dokumencie zawierającym 350 stron. To oznacza konieczność umieszczenia na każdej stronie dwóch pól korespondencji seryjnej, pierwszego zawierającego nazwę pola "data" i drugiego "Następny rekord". W ramach jednego drukowanego dokumentu, standardowo, można wydrukować tylko pole z jednego rekordu. Aby wymusić dostęp do danych następnego rekordu trzeba użyć pola "Następny rekord" i powtórzyć nazwę pola do wydruku. A trzeba to zrobić w obszarze dokumentu a nie stopki lub nagłówka. Czyli pojawiłaby się konieczność wstawienia tych pól na każdej kolejnej stronie.
Co innego byłoby gdyby na każdej stronie był taki sam układ treści ale z dedykowanymi dla tej strony fragmentami. Wówczas można byłoby pomyśleć o korespondencji seryjnej, ale baza dla tej korespondencji powinna zawierać dodatkowe pola, wypełniające treść strony. A sam dokument składałby się z jednej strony z treścią i odpowiednio rozmieszczonymi polami korespondencji seryjnej. A jeśli docelowo te strony miałyby tworzyć jeden kompletny dokument, to jedno z pól powinno zawierać także liczbę odpowiadającą za numer strony, która byłaby wstawiana podczas drukowania.
Co pozostaje?
Jeżeli dokument ma zostać wydrukowany, to wykorzystałbym korespondencję seryjną w taki sposób:
No właśnie nic nie wiemy o dokumencie. Gdyby to był dokument jednostronicowy, to owszem jest to prosta metoda i szybka. Lecz Avesi pisze o dokumencie zawierającym 350 stron. To oznacza konieczność umieszczenia na każdej stronie dwóch pól korespondencji seryjnej, pierwszego zawierającego nazwę pola "data" i drugiego "Następny rekord". W ramach jednego drukowanego dokumentu, standardowo, można wydrukować tylko pole z jednego rekordu. Aby wymusić dostęp do danych następnego rekordu trzeba użyć pola "Następny rekord" i powtórzyć nazwę pola do wydruku. A trzeba to zrobić w obszarze dokumentu a nie stopki lub nagłówka. Czyli pojawiłaby się konieczność wstawienia tych pól na każdej kolejnej stronie.
Co innego byłoby gdyby na każdej stronie był taki sam układ treści ale z dedykowanymi dla tej strony fragmentami. Wówczas można byłoby pomyśleć o korespondencji seryjnej, ale baza dla tej korespondencji powinna zawierać dodatkowe pola, wypełniające treść strony. A sam dokument składałby się z jednej strony z treścią i odpowiednio rozmieszczonymi polami korespondencji seryjnej. A jeśli docelowo te strony miałyby tworzyć jeden kompletny dokument, to jedno z pól powinno zawierać także liczbę odpowiadającą za numer strony, która byłaby wstawiana podczas drukowania.
Co pozostaje?
Jeżeli dokument ma zostać wydrukowany, to wykorzystałbym korespondencję seryjną w taki sposób:
- Wydrukowałbym cały dokument.
- Przygotowałbym źródło danych tak jak to opisałeś.
- Przygotowałbym dokument wyjściowy w taki sposób aby pole z datą było drukowane poza obszarem wynikającym z wydrukowanego już wcześniej dokumentu.
- Wykonał korespondencję seryjną na tych wydrukowanych kartkach zdając sobie sprawę z konsekwencji jakie mogą wyniknąć z zacięcia papieru, wciągnięcia przez drukarką dwóch arkuszy na raz, itp..
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: Dodawanie kolejnej daty na każdej stronie
Jest jeszcze jeden sposób umieszczenia daty. Nie wymaga on korzystania z korespondencji seryjnej. Jednak zmieniającą się datę można w ten sposób dodać tylko we właściwym tekście, a więc nie w ramce ani w polu tekstowym.
Na pierwszej stronie dokumentu, na tej na której ma się pojawić data początkowa należy wstawić pole kategorii "Zmienne" "Wstaw -> Pole -> Więcej pól -> Zmienne"
Wybrać "Ustaw zmienną, nadać jej nazwę np. "start", przypisać wartość liczbową odpowiadającą dacie początkowej (np. jak napisał Astur dla daty 23.12.2018 jest to liczba 43457), wybrać własne formatowanie tej liczby wybierając "Dodatkowe formaty" i wskazując kategorię Data. Można też zmodyfikować ten format do postaci NNNN D MMMM YYYY co zapewni, że dni od 1. do 9. zostaną przedstawione jako liczby jednocyfrowe.
W następnym miejscu, w którym ma się pojawić kolejna data wstawić pole "Wstaw formułę" jako formułę wpisać: start=start+1 i upewnić się, że nadal jest wybrany właściwy format wyświetlania.
Teraz można skopiować to drugie pole i kopiować je kolejno do następnych miejsc. Dość łatwo jak sądzę (to jednak może zależeć od struktury dokumentu) dałoby się napisać makro wykonujące tę czynność na wszystkie pozostałe strony.
Na pierwszej stronie dokumentu, na tej na której ma się pojawić data początkowa należy wstawić pole kategorii "Zmienne" "Wstaw -> Pole -> Więcej pól -> Zmienne"
Wybrać "Ustaw zmienną, nadać jej nazwę np. "start", przypisać wartość liczbową odpowiadającą dacie początkowej (np. jak napisał Astur dla daty 23.12.2018 jest to liczba 43457), wybrać własne formatowanie tej liczby wybierając "Dodatkowe formaty" i wskazując kategorię Data. Można też zmodyfikować ten format do postaci NNNN D MMMM YYYY co zapewni, że dni od 1. do 9. zostaną przedstawione jako liczby jednocyfrowe.
W następnym miejscu, w którym ma się pojawić kolejna data wstawić pole "Wstaw formułę" jako formułę wpisać: start=start+1 i upewnić się, że nadal jest wybrany właściwy format wyświetlania.
Teraz można skopiować to drugie pole i kopiować je kolejno do następnych miejsc. Dość łatwo jak sądzę (to jednak może zależeć od struktury dokumentu) dałoby się napisać makro wykonujące tę czynność na wszystkie pozostałe strony.
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: Dodawanie kolejnej daty na każdej stronie
Dziękuję za wszystkie sugestię!
Libre office 6.1.3.2 Windows 10