auto uzupełnianie danych + wysyłka @
auto uzupełnianie danych + wysyłka @
Witajcie,
Tworzę "przypominajkę zaległych terminów" (załącznik). I nie mogę sobie poradzić z opcją autouzupełniania kilku pól po wybraniu "klienta" z listy. Czyli adres @ i nr telefonu. Baza danych jest w oddzielnej zakładce.
Przydałaby się jeszcze opcja, aby po wciśnięciu adresu @ (jest to jedna z pozycji autouzupełniania) wysyłania @ do klienta przypominającego o zbliżającym się terminie końca ważności certyfikacji/wzorcowania danego przedmiotu (dane z komórek) (tu pewnie makra będą)
Dodatkowo, obrazowo chciałbym aby było kilka flag (na razie działają testowo tylko 2 kolory) które zmieniaja sie w zależności od ilosci dni. Ostatecznie ma być:
jeśli termin minął flaga bardowa (termin ustawiony w komórce na 31 dni)
jeśli jest poniżej lub równo 14 dni flaga czerwona
jeśli jest powyżej 14 dni i poniżej lub równo 31 dni do końca to flaga pomarańczowa
jeśli jest powyżej 31 dni i poniżej lub równo 62 dni do końca to żółta
jeśli jest powyżej 62 dni to flaga zielona
Poprosze o podpowiedzi jak to zrobić. Dziekuję za wszelka pomoc.
Tworzę "przypominajkę zaległych terminów" (załącznik). I nie mogę sobie poradzić z opcją autouzupełniania kilku pól po wybraniu "klienta" z listy. Czyli adres @ i nr telefonu. Baza danych jest w oddzielnej zakładce.
Przydałaby się jeszcze opcja, aby po wciśnięciu adresu @ (jest to jedna z pozycji autouzupełniania) wysyłania @ do klienta przypominającego o zbliżającym się terminie końca ważności certyfikacji/wzorcowania danego przedmiotu (dane z komórek) (tu pewnie makra będą)
Dodatkowo, obrazowo chciałbym aby było kilka flag (na razie działają testowo tylko 2 kolory) które zmieniaja sie w zależności od ilosci dni. Ostatecznie ma być:
jeśli termin minął flaga bardowa (termin ustawiony w komórce na 31 dni)
jeśli jest poniżej lub równo 14 dni flaga czerwona
jeśli jest powyżej 14 dni i poniżej lub równo 31 dni do końca to flaga pomarańczowa
jeśli jest powyżej 31 dni i poniżej lub równo 62 dni do końca to żółta
jeśli jest powyżej 62 dni to flaga zielona
Poprosze o podpowiedzi jak to zrobić. Dziekuję za wszelka pomoc.
- Załączniki
-
- przypominajka o końcu terminu certyfikacji wzorcowania - testowa.ods
- (61.81 KiB) Pobrany 13 razy
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
Ad uzupełnianie: funkcja wyszukująca czyli vlookup (wyszukaj.pionowo) albo para funkcji match / index (podaj.pozycję / indeks). Patrz załącznik
Najpierw warto przygotować zestaw stylów odpowiadających poszczególnym statusom.
Potem w formatowaniu warunkowym (Format → Warunkowe → Zarządzaj) analizować wartość formuł postaci
today() > data z komórki + wartość progowa
Odpowiednia opcja nazywa się `Formuła to`, a jako akcję podać `Zastosuj styl` odpowiedni dla danego progu.
Kolejność warunków ma znaczenie; zastosowane będzie formatowanie odpowiadające pierwszemu spełnionemu warunkowi — czyli takiemu, którego formuła daje wynik True, ew. liczbowy różny od 0.
Ad flagi/kolory: formatowanie warunkowe.Najpierw warto przygotować zestaw stylów odpowiadających poszczególnym statusom.
Potem w formatowaniu warunkowym (Format → Warunkowe → Zarządzaj) analizować wartość formuł postaci
today() > data z komórki + wartość progowa
Odpowiednia opcja nazywa się `Formuła to`, a jako akcję podać `Zastosuj styl` odpowiedni dla danego progu.
Kolejność warunków ma znaczenie; zastosowane będzie formatowanie odpowiadające pierwszemu spełnionemu warunkowi — czyli takiemu, którego formuła daje wynik True, ew. liczbowy różny od 0.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: auto uzupełnianie danych + wysyłka @
Dziękuje za pomoc.Jan_J pisze: ↑pn lut 17, 2025 7:28 pm Ad uzupełnianie: funkcja wyszukująca czyli vlookup (wyszukaj.pionowo) albo para funkcji match / index (podaj.pozycję / indeks). Patrz załącznik
przypominajka o końcu terminu certyfikacji wzorcowania - testowa.ods
Ad flagi/kolory: formatowanie warunkowe.
Najpierw warto przygotować zestaw stylów odpowiadających poszczególnym statusom.
Potem w formatowaniu warunkowym (Format → Warunkowe → Zarządzaj) analizować wartość formuł postaci
today() > data z komórki + wartość progowa
Odpowiednia opcja nazywa się `Formuła to`, a jako akcję podać `Zastosuj styl` odpowiedni dla danego progu.
Kolejność warunków ma znaczenie; zastosowane będzie formatowanie odpowiadające pierwszemu spełnionemu warunkowi — czyli takiemu, którego formuła daje wynik True, ew. liczbowy różny od 0.
Próbowałem z tymi flagami, niestety niezaleznie od kolejności cały czas pokazuje mi flagę "bordową" przypisaną wartości poniżej 0
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
Dobrze; przymierzę się w wolnej chwili, ale nie obiecuję, że dzisiaj.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: auto uzupełnianie danych + wysyłka @
Trochę pogrzebałem przy twoim projekcie. Może niepotrzebnie, ale podsyłam ci skoroszyt, w którym zobaczysz funkcjonowanie formatowania warunkowego.
Co pozmieniałem?
Usunąłem kolumnę "Flaga", a jej kolorem zaznaczam tę część wiersza, która jest zablokowana na ekranie.
Zmodyfikowałem sposób wyznaczania daty następnej certyfikacji w taki sposób, że zamiast ostatniej daty certyfikacji należy wprowadzić datę pierwszej certyfikacji (czyli chyba datę podpisania umowy) oraz okres powtarzania certyfikacji w miesiącach. W arkuszu, na podstawie tych danych automatycznie wyznaczana jest data najbliższej wymaganej certyfikacji względem aktualnej daty. Tylko że przy tym sposobie nie mogę otrzymać ujemnej liczby dni ważności certyfikatu, dlatego w tym rozwiązaniu uznałem, że wygaśnięcie certyfikatu (uznałem, że o tym informuje kolumna "Akredytacja") oznaczy wiersz kolorem bordowym.
W stopce sygnalizujesz LibreOffice 24.8, więc do dopisania adresów mailowych i telefonów zastosowałem dostępną dopiero od tej wersji funkcję X.WYSZUKAJ().
Co do problemu informowania mailami odbiorców o konieczności odnowienia, to mając taką bazę "przypominajkową" można pomyśleć o przygotowaniu korespondencji seryjnej wysyłającej maile do klientów. Nie wymaga to wówczas pisania makr. Ale to temat do chyba odrębnego omówienia.
Co pozmieniałem?
Usunąłem kolumnę "Flaga", a jej kolorem zaznaczam tę część wiersza, która jest zablokowana na ekranie.
Zmodyfikowałem sposób wyznaczania daty następnej certyfikacji w taki sposób, że zamiast ostatniej daty certyfikacji należy wprowadzić datę pierwszej certyfikacji (czyli chyba datę podpisania umowy) oraz okres powtarzania certyfikacji w miesiącach. W arkuszu, na podstawie tych danych automatycznie wyznaczana jest data najbliższej wymaganej certyfikacji względem aktualnej daty. Tylko że przy tym sposobie nie mogę otrzymać ujemnej liczby dni ważności certyfikatu, dlatego w tym rozwiązaniu uznałem, że wygaśnięcie certyfikatu (uznałem, że o tym informuje kolumna "Akredytacja") oznaczy wiersz kolorem bordowym.
W stopce sygnalizujesz LibreOffice 24.8, więc do dopisania adresów mailowych i telefonów zastosowałem dostępną dopiero od tej wersji funkcję X.WYSZUKAJ().
Co do problemu informowania mailami odbiorców o konieczności odnowienia, to mając taką bazę "przypominajkową" można pomyśleć o przygotowaniu korespondencji seryjnej wysyłającej maile do klientów. Nie wymaga to wówczas pisania makr. Ale to temat do chyba odrębnego omówienia.
- Załączniki
-
- mar testowy.ods
- (53.43 KiB) Pobrany 11 razy
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Dziękuje za pomoc, ale niestety jest źle wyliczana data następnej certyfikacji. Nie liczy roku, tylko zmienia się miesiąc. np wczesniejsza jest z 2022 a dodając np 3 miesiące wyświetla się 2025 rJermor pisze: ↑śr lut 19, 2025 12:50 pm Trochę pogrzebałem przy twoim projekcie. Może niepotrzebnie, ale podsyłam ci skoroszyt, w którym zobaczysz funkcjonowanie formatowania warunkowego.
Co pozmieniałem?
Usunąłem kolumnę "Flaga", a jej kolorem zaznaczam tę część wiersza, która jest zablokowana na ekranie.
Zmodyfikowałem sposób wyznaczania daty następnej certyfikacji w taki sposób, że zamiast ostatniej daty certyfikacji należy wprowadzić datę pierwszej certyfikacji (czyli chyba datę podpisania umowy) oraz okres powtarzania certyfikacji w miesiącach. W arkuszu, na podstawie tych danych automatycznie wyznaczana jest data najbliższej wymaganej certyfikacji względem aktualnej daty. Tylko że przy tym sposobie nie mogę otrzymać ujemnej liczby dni ważności certyfikatu, dlatego w tym rozwiązaniu uznałem, że wygaśnięcie certyfikatu (uznałem, że o tym informuje kolumna "Akredytacja") oznaczy wiersz kolorem bordowym.
W stopce sygnalizujesz LibreOffice 24.8, więc do dopisania adresów mailowych i telefonów zastosowałem dostępną dopiero od tej wersji funkcję X.WYSZUKAJ().
Co do problemu informowania mailami odbiorców o konieczności odnowienia, to mając taką bazę "przypominajkową" można pomyśleć o przygotowaniu korespondencji seryjnej wysyłającej maile do klientów. Nie wymaga to wówczas pisania makr. Ale to temat do chyba odrębnego omówienia.


Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
Data następnej certyfikacji wylicza się dobrze. Bo obliczana jest na podstawie daty początkowej całego procesu, a nie daty ostatniej certyfikacji. W tym przypadku, przy certyfikowaniu co pół roku, wypada dokładnie w tym samym dniu i miesiącu co data początkowa, ale w roku bieżącym. Tak to wymyśliłem, żeby nie trzeba było za każdym razem zmieniać daty ostatniej certyfikacji. Dlatego napisałem, że grzebałem w tym może niepotrzebnie.
No i uwaga na wersję LibreOffice. Zasugerowałem się liczbą 24 i nie spojrzałem, co jest dalej. Te nowe funkcje dostępne są dopiero od wersji 24.8
No i uwaga na wersję LibreOffice. Zasugerowałem się liczbą 24 i nie spojrzałem, co jest dalej. Te nowe funkcje dostępne są dopiero od wersji 24.8
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Masz rację, jest to fajne rozwiazane. Bardzo ułatwiające pod warunkiem, że klienci są suksesywni. Niestety, czasem jest tak, że przyrząd trafia do certyfikacji z miesiecznym/ kilkutygodniowym wyprzedzeniem (i ma sie z głowy), czasem jest tak, że klienci potrafią z miesiecznym opóźnieniem przynieść. Wtedy liczenie nie jest od pierszej wpisanej daty certyfikacji, ale ostatniej. No i jeszcze kwestia terminów różnych laboratoriów. Jedne potrafia wykonac certyfikacje w ciagu 2 tygodni, drudzy maja na to 31 dni. A zdażyło sie 2x, że labolatoria wystawiły certyfikat z 3 miesiecznym opóźnieniem po otrzymaniu przyrządu, ponieważ sami musieli wysłać swoje przyrządy wzorcujące do certyfikacji. Dlatego uznałem, że bezpieczniejsza opcja jest jednak reczne wpisywanie ostatniej daty certyfikacji z dokumentów, niżeli miałby "liczyć automat".Jermor pisze: ↑śr lut 19, 2025 2:39 pm Data następnej certyfikacji wylicza się dobrze. Bo obliczana jest na podstawie daty początkowej całego procesu, a nie daty ostatniej certyfikacji. W tym przypadku, przy certyfikowaniu co pół roku, wypada dokładnie w tym samym dniu i miesiącu co data początkowa, ale w roku bieżącym. Tak to wymyśliłem, żeby nie trzeba było za każdym razem zmieniać daty ostatniej certyfikacji. Dlatego napisałem, że grzebałem w tym może niepotrzebnie.
No i uwaga na wersję LibreOffice. Zasugerowałem się liczbą 24 i nie spojrzałem, co jest dalej. Te nowe funkcje dostępne są dopiero od wersji 24.8
Ale dziękuję za pomoc
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
No tak, jak się nie zna całej procedury, to się coś wymyśla.
Sądzę jednak, że przyda ci się przynajmniej formuła wyznaczająca następny termin certyfikacji (w twoim pliku)
Sądzę jednak, że przyda ci się przynajmniej formuła wyznaczająca następny termin certyfikacji (w twoim pliku)
Kod: Zaznacz cały
=JEŻELI(I3="";"";NR.SER.DATY(I3;J3))
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Już wiem co robiłem źle z flagami, ja wybierałem zakres dni "od-do", co było dla mnie bardziej logiczne. Ty użyłeś (znazwę to) "kolejności zastępowania kolorów"Jermor pisze: ↑śr lut 19, 2025 8:21 pm No tak, jak się nie zna całej procedury, to się coś wymyśla.
Sądzę jednak, że przyda ci się przynajmniej formuła wyznaczająca następny termin certyfikacji (w twoim pliku)Kod: Zaznacz cały
=JEŻELI(I3="";"";NR.SER.DATY(I3;J3))
Wstawiłem do oryginalnego pliku i działa.
Dzięki.
Jeszcze tylko te wysyłanie @ mi zostało
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
To nie ma znaczenia, jakich wartości użyłeś. Mogłeś użyć dat "od — do", ale w odpowiedniej kolejności. Tyle że w kolumnie L masz już wyliczoną liczbę dni, więc wygodniej jest ją wykorzystać.
Wykorzystanie dat powinno być wpisane w następującej kolejności (napisał o tym @Jan_J w swojej odpowiedzi):
tutaj także można wykorzystać "kolejność zastępowania kolorów":
Co do maili. Jak wspomniałem, można do tego wykorzystać właściwość korespondencji seryjnej. Jest to funkcjonalność Writera wykorzystująca zarejestrowaną bazę danych. Taką zarejestrowaną bazą może być skoroszyt arkusza kalkulacyjnego. Jest tu jednak pewne ograniczenie. Konkretna tabela wykorzystywana jako baza musi zaczynać się w komórce A1 arkusza, a pierwszy wiersz musi zawierać nazwy kolumn, od wiersza drugiego znajdują się już dane.
W opcjach programu Writer należy zdefiniować parametry serwera pocztowego, natomiast sama wysyłka realizowana jest przez program pocztowy zarejestrowany w systemie.
O korespondencji seryjnej napisałem tutaj: https://yestok.pl/lbo/y34.php
Jeśli ten pomysł cię zainteresuje, mogę go przedstawić bardziej szczegółowo. Ze względu na to, że jest to funkcjonalność Writera, sugerowałbym nowy temat w dziale Writer naszego forum.
Wykorzystanie dat powinno być wpisane w następującej kolejności (napisał o tym @Jan_J w swojej odpowiedzi):
Kod: Zaznacz cały
K3-DZIŚ()<0
I(K3-DZIŚ()>=0;K3-DZIŚ()<=14)
I(K3-DZIŚ()>14;K3-DZIS()<=31)
I(K3-DZIS()>31;K3-DZIŚ()<=62)
K3-DZIŚ()>62
Kod: Zaznacz cały
K3-DZIŚ()<0
K3-DZIŚ()<=14
K3-DZIS()<=31
K3-DZIŚ()<=62
K3-DZIŚ()>62
W opcjach programu Writer należy zdefiniować parametry serwera pocztowego, natomiast sama wysyłka realizowana jest przez program pocztowy zarejestrowany w systemie.
O korespondencji seryjnej napisałem tutaj: https://yestok.pl/lbo/y34.php
Jeśli ten pomysł cię zainteresuje, mogę go przedstawić bardziej szczegółowo. Ze względu na to, że jest to funkcjonalność Writera, sugerowałbym nowy temat w dziale Writer naszego forum.
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Dziekuję, potrzebuję mieć wszystko w jednym pliku, ponieważ nie tylko ja bede z tego korzystał, a każdy dodatkowy plik to niestety dodatkowe minuty pracy z nim, których nie zawsze mam. Postanowiłem zwrócić się do AI o pomoc w pisaniu makra. Jak na razie udało się stworzyc działające makro pod jeden przycisk. Ale od kilku dni walczę, aby automatycznie makro dodawało przyciski do nowych pozycji w liście i uzupełnił brakujace. Mimo makra które powinno odpowiadac za taka czynnosc, nadal przycisk jest jeden główny. Jak nie uda mi się dogadać z AI, to podeslę tutaj plik, może Wy forumowicze, specjaliści bedziecie mogli poprawić nasz (moje i AI) wypociny. Bo nie mogę zlokalizowac błędu.Jermor pisze: ↑czw lut 20, 2025 3:22 pm
Co do maili. Jak wspomniałem, można do tego wykorzystać właściwość korespondencji seryjnej. Jest to funkcjonalność Writera wykorzystująca zarejestrowaną bazę danych. Taką zarejestrowaną bazą może być skoroszyt arkusza kalkulacyjnego. Jest tu jednak pewne ograniczenie. Konkretna tabela wykorzystywana jako baza musi zaczynać się w komórce A1 arkusza, a pierwszy wiersz musi zawierać nazwy kolumn, od wiersza drugiego znajdują się już dane.
W opcjach programu Writer należy zdefiniować parametry serwera pocztowego, natomiast sama wysyłka realizowana jest przez program pocztowy zarejestrowany w systemie.
O korespondencji seryjnej napisałem tutaj: https://yestok.pl/lbo/y34.php
Jeśli ten pomysł cię zainteresuje, mogę go przedstawić bardziej szczegółowo. Ze względu na to, że jest to funkcjonalność Writera, sugerowałbym nowy temat w dziale Writer naszego forum.
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
Ja bym nie tworzył przycisków przy każdej pozycji.
Sugeruję przypisanie makra do dodatkowego polecenia w pasku narzędziowym. Przycisk byłby wykorzystany po kliknięciu lub wskazaniu przy pomocy klawiatury jednej z komórek wiersza, który ma być podstawą treści maila. Makro powinno zlokalizować ten wiersz i na jego podstawie wysłać maila. Aby zabezpieczyć się przed przypadkową wysyłką, makro powinno wystawiać komunikat o wysłaniu maila, z informacjami kogo dotyczą. Użytkownik musiałby tylko zatwierdzić albo odrzucić realizację.
To ułatwiłoby sposób dodawania (usuwania) wierszy.
Sugeruję przypisanie makra do dodatkowego polecenia w pasku narzędziowym. Przycisk byłby wykorzystany po kliknięciu lub wskazaniu przy pomocy klawiatury jednej z komórek wiersza, który ma być podstawą treści maila. Makro powinno zlokalizować ten wiersz i na jego podstawie wysłać maila. Aby zabezpieczyć się przed przypadkową wysyłką, makro powinno wystawiać komunikat o wysłaniu maila, z informacjami kogo dotyczą. Użytkownik musiałby tylko zatwierdzić albo odrzucić realizację.
To ułatwiłoby sposób dodawania (usuwania) wierszy.
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Makro jest już dla mnie problematyczne (kosmos), a co dopiero dodatkowe przyciski w pasku narzędziowym.Jermor pisze: ↑wt lut 25, 2025 9:13 pm Ja bym nie tworzył przycisków przy każdej pozycji.
Sugeruję przypisanie makra do dodatkowego polecenia w pasku narzędziowym. Przycisk byłby wykorzystany po kliknięciu lub wskazaniu przy pomocy klawiatury jednej z komórek wiersza, który ma być podstawą treści maila. Makro powinno zlokalizować ten wiersz i na jego podstawie wysłać maila. Aby zabezpieczyć się przed przypadkową wysyłką, makro powinno wystawiać komunikat o wysłaniu maila, z informacjami kogo dotyczą. Użytkownik musiałby tylko zatwierdzić albo odrzucić realizację.
To ułatwiłoby sposób dodawania (usuwania) wierszy.
Obecnie przycisk automatycznie, w tle, nie wysyła @, a otwiera np Thunbirda czy Outlooko z adresem, tematem i treścią pobieraną z istniejących już komórek. Więc jeśli nawet przez przypadek zostanie wcisnięty przycisk, to i tak trzeba potwierdzić wysłanie w otwartym okienku Thunbirda.
Niestety nadal nie wiem, dlaczego automatycznie nie dodaje kolejnych przycisków do wysylania @
Kod: Zaznacz cały
Sub SendEmailFromRow(oEvent As Object)
Dim oSheet As Object
Dim oButton As Object
Dim eMailAddress As String
Dim Subject As String
Dim Message As String
Dim Message1 As String
Dim Message2 As String
Dim Message3 As String
Dim Message4 As String
Dim Message5 As String
Dim oShell As Object
Dim MailCommand As String
Dim row As Long
Dim oCell As Object
Dim btnName As String
' Pobranie aktywnego arkusza
oSheet = ThisComponent.CurrentController.ActiveSheet
' Pobranie przycisku, który wywołał makro
oButton = oEvent.Source.Model
btnName = oButton.Name
' Pobranie numeru wiersza z nazwy przycisku (np. "Email_1" → 1)
If InStr(btnName, "_") = 0 Then Exit Sub
row = CLng(Mid(btnName, InStr(btnName, "_") + 1))
' Pobranie adresu e-mail (kolumna R = 17)
oCell = oSheet.getCellByPosition(17, row)
eMailAddress = Trim(oCell.getString())
If eMailAddress = "" Then eMailAddress = Trim(oCell.getFormula())
If eMailAddress = "" Then eMailAddress = Trim(CStr(oCell.getValue()))
' Sprawdzenie, czy adres e-mail istnieje
If eMailAddress = "" Or eMailAddress = "0" Then
MsgBox "Brak adresu e-mail w wierszu " & (row + 1), 48, "Błąd"
Exit Sub
End If
' Pobranie treści wiadomości
Subject = " - Przypomnienie o zbliżającym się terminie."
Message1 = oSheet.getCellByPosition(4, row).String ' Kolumna E - przyrząd
Message2 = oSheet.getCellByPosition(5, row).String ' Kolumna F - model
Message3 = oSheet.getCellByPosition(6, row).String ' Kolumna G - nr seryjny
Message4 = oSheet.getCellByPosition(11, row).String ' Kolumna L - następna data
' Pobranie wyświetlanej wartości z kolumny P (15)
Dim oCellP As Object
oCellP = oSheet.getCellByPosition(15, row)
If oCellP.Type = com.sun.star.table.CellContentType.VALUE Then
Message5 = CStr(oCellP.getValue()) ' Pobiera wartość liczbową jako tekst
Else
Message5 = oCellP.getString() ' Pobiera zwykły tekst
End If
' Tworzenie treści e-maila
Message = "Dzień dobry,%0A%0A" & _
"Przypominamy, że zbliża się " & Message5 & " przyrządu : " & "%0A" & _
Message1 & "%0A" & _
"Model: " & Message2 & "%0A" & _
"Numer seryjny: " & Message3 & "%0A%0A" & _
"Koniec ważności dokumentu " & Message5 & " przypisano na dzień " & Message4 & ".%0A%0A"
' Tworzenie polecenia mailto
MailCommand = "mailto:" & eMailAddress & "?subject=" & Message5 & Subject & "&body=" & Message
' Uruchomienie klienta pocztowego
On Error GoTo ErrorHandler
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(MailCommand, "", 0)
Exit Sub
ErrorHandler:
MsgBox "Nie można wysłać e-maila. Sprawdź klienta poczty.", 48, "Błąd"
End Sub
' ===================================================
' 🛠 Automatyczne dodawanie przycisków do wysyłania e-maili
' ===================================================
Sub AddEmailButtons()
Dim oSheet As Object
Dim oDoc As Object
Dim oDrawPage As Object
Dim oButton As Object
Dim oForm As Object
Dim row As Long
Dim lastRow As Long
Dim btnName As String
Dim oCell As Object
Dim oExistingButton As Object
Dim oShape As Object
' Pobranie aktywnego arkusza i strony rysowania
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Pierwszy arkusz
oDrawPage = oSheet.DrawPage ' Strona rysowania dla przycisków
' Pobranie ostatniego wiersza z danymi w kolumnie R (17) - adresy e-mail
lastRow = GetLastRow(oSheet, 17)
' Iteracja po wierszach i tworzenie przycisków
For row = 1 To lastRow
btnName = "Email_" & row
oCell = oSheet.getCellByPosition(17, row)
' Pobranie wyświetlanej wartości (jeśli formuła)
Dim emailAddress As String
If oCell.FormulaResultType = com.sun.star.table.CellContentType.VALUE Then
emailAddress = Trim(CStr(oCell.getValue()))
Else
emailAddress = Trim(oCell.getString())
End If
' Jeśli brak adresu e-mail, pomiń ten wiersz
If emailAddress = "" Then GoTo ContinueLoop
' Sprawdzenie, czy przycisk już istnieje
oExistingButton = Nothing
On Error Resume Next
oExistingButton = oDrawPage.getByName(btnName)
On Error GoTo 0
' Jeśli przycisk już istnieje, pomiń dodawanie nowego
If Not IsNull(oExistingButton) Then GoTo ContinueLoop
' Tworzenie kształtu dla przycisku
oShape = oDoc.createInstance("com.sun.star.drawing.ControlShape")
oShape.Size = CreateUnoStruct("com.sun.star.awt.Size")
oShape.Position = CreateUnoStruct("com.sun.star.awt.Point")
' Ustawienie pozycji i rozmiaru przycisku
oShape.Position.X = 9000 ' Pozycja pozioma (dostosuj)
oShape.Position.Y = row * 500 ' Dopasowanie do wiersza
oShape.Size.Width = 2500
oShape.Size.Height = 1000
' Tworzenie obiektu przycisku
oButton = oDoc.createInstance("com.sun.star.form.component.CommandButton")
oButton.Name = btnName
oButton.Label = "Wyślij e-mail"
' Przypisanie makra do przycisku
Dim oMacro As New com.sun.star.script.ScriptEventDescriptor
oMacro.EventMethod = "execute"
oMacro.ScriptCode = "vnd.sun.star.script:Standard.Module1.SendEmailFromRow?language=Basic&location=document"
oButton.Events.insertByName("Execute", oMacro)
' Dodanie kontrolki do kształtu
oShape.Control = oButton
' Dodanie przycisku do arkusza
oDrawPage.add(oShape)
ContinueLoop:
Next row
End Sub
' ===================================================
' 🔍 Znalezienie ostatniego wiersza z danymi w danej kolumnie
' ===================================================
Function GetLastRow(oSheet As Object, col As Integer) As Long
Dim row As Long
Dim oCell As Object
' Sprawdzanie od dołu arkusza, szukając pierwszej niepustej komórki
For row = 999 To 0 Step -1 ' Zakładamy max 1000 wierszy
On Error Resume Next
oCell = oSheet.getCellByPosition(col, row)
On Error GoTo 0
If Not IsNull(oCell) Then
If Trim(oCell.getString()) <> "" Then
GetLastRow = row
Exit Function
End If
End If
Next row
GetLastRow = 0 ' Jeśli brak danych, zwracamy 0
End Function
- Załączniki
-
- przypominajka o końcu terminu certyfikacji wzorcowania test.ods
- (71.81 KiB) Pobrany 11 razy
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
Zastanawiałem się nad problem dodawania przycisków do dokumentu i znalazłem pewne problematyczne elementy które poprawiłem. Spróbuj tego rozwiązania:
Kod: Zaznacz cały
' ===================================================
' Automatyczne dodawanie przycisków do wysyłania e-maili
' ===================================================
Sub AddEmailButtons()
Dim oSheet As Object
Dim oDoc As Object
Dim oDrawPage As Object
Dim oButton As Object
Dim oForms As Object
Dim row As Long
Dim lastRow As Long
Dim btnName As String
Dim oCell As Object
Dim oExistingButton As Boolean
Dim oShape As Object
' Pobranie aktywnego arkusza i strony rysowania
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Pierwszy arkusz
oDrawPage = oSheet.DrawPage ' Strona rysowania dla przycisków
oForms = oDrawPage.Forms(0)
' Pobranie ostatniego wiersza z danymi w kolumnie R (17) - adresy e-mail
lastRow = GetLastRow(oSheet, 17)
' Iteracja po wierszach i tworzenie przycisków
For row = 2 To lastRow
btnName = "Email_" & row
oCell = oSheet.getCellByPosition(17, row)
' Pobranie wyświetlanej wartości (jeśli formuła)
Dim emailAddress As String
If oCell.FormulaResultType = com.sun.star.table.CellContentType.VALUE Then
emailAddress = Trim(CStr(oCell.getValue()))
Else
emailAddress = Trim(oCell.getString())
End If
' Jeśli brak adresu e-mail, pomiń ten wiersz
If emailAddress = "" Then GoTo ContinueLoop
' Sprawdzenie, czy przycisk już istnieje
oExistingButton = oForms.hasByName(btnName)
' Jeśli przycisk już istnieje, pomiń dodawanie nowego
If oExistingButton Then GoTo ContinueLoop
' Tworzenie obiektu przycisku
oButton = oDoc.createInstance("com.sun.star.form.component.CommandButton")
oButton.Name = btnName
oButton.Label = "Wyślij e-mail"
' Tworzenie kształtu dla przycisku
oShape = oDoc.createInstance("com.sun.star.drawing.ControlShape")
oShape.Name = "Formant " & row 'nazwa "rysunku"
' Ustawienie pozycji i rozmiaru przycisku
oCell = oSheet.getCellByPosition(20, row) 'do tej komórki wstaw przycisk
oShape.setControl(oButton) ' Dodanie kontrolki do kształtu
oSheet.DrawPage.add(oShape) ' Dodanie przycisku do arkusza
oShape.Anchor = oCell
oShape.setSize(oCell.Size)
oShape.setPosition(oCell.Position)
' Przypisanie makra do przycisku
Dim oMacro As New com.sun.star.script.ScriptEventDescriptor
oMacro = CreateUnoStruct("com.sun.star.script.ScriptEventDescriptor")
With oMacro
.AddListenerParam = ""
.EventMethod = "actionPerformed"
.ListenerType = "XActionListener"
'.ScriptCode = "vnd.sun.star.script:Standard.Module1.SendEmailFromRow?language=Basic&location=document" 'położenie makra
.ScriptCode = "vnd.sun.star.script:Standard.Module1.SendEmailFromRow?language=Basic&location=application" '
.ScriptType = "Script"
End With
oForms.registerScriptEvent(oForms.Count-1, oMacro)
ContinueLoop:
Next row
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
Re: auto uzupełnianie danych + wysyłka @
Jest lepiej niż było jak mi AI proponowało rozwiązania. Dziękuję.
Ale nie wiem czy to tak ma działać. U mnie działa dopiero, że jak zaznacze pustą komórkę w wierszu z danymi gdzie ma być przycisk (ale go jeszcze nie ma) i uruchomie makro, wtedy dodają sie przyciski do pozostałych wierszy. Osoby, które nie znaja się na formułkach i makrach będą miały problem z uruchamianiem.
Moim zamysłem było, że jak wstawiam nowy wiersz z klientem, pojawia sie z automatu e-mail oraz przycisk. Niestety, u mnie nie działa. Może coś źle to robie dalej?
Zastanawiałem sie też nad innym rozwiązaniem.
Skoro przyciski nie pojawiają się automatycznie po dodaniu nowego wiersza z danymi, to może jest opcja uruchamiania makra wysyłania e-mail poprzez nacisnięcie samego napisu (bez przycisku) "Wyślij @" w komórce. A taki napis jest łatwiejszy do ogarnięcia, żeby sam się pojawiał.
Dziś w wolnej chwili, spróbuję. A jak nie to albo znów będe męczył kilka dni AI żeby prawidłowo mi makro stworzył, albo (jesli mogę

ps. zmieniłem na nowszą wersje Libre. Stwierdziłem, że może tu leży wina, że mi nie działaja przyciski jak mam w zamysłach. Nic to nie dało.
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
I właśnie tak jest skonstruowane to makro. Ono działa dopiero po jego uruchomieniu.
Zobacz ten link, jest tam przestawione pewne rozwiązanie: Po wpisaniu czegoś do komórki z zakresu B1:B1000, program automatycznie, w tym samym wierszu ale w kolumnie A wpisze aktualną datę. Można nieco przerobić tamtejsze makro aby zamiast wpisywać datę - uruchomiało się makro wstawiające przycisk. Uwaga, w dokumencie musi być przynajmniej jeden obiekt formularza (np przycisk) bo podczas pierwszego uruchomienia makra powstanie błąd.
Osobiście nie wstawiałbym dużej ilości przycisków do pliku, obawiałbym się, że niepotrzebnie wzrósłby jego rozmiar. Zaprezentowane rozwiązanie zrealizowałem tylko z ciekawości.
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: auto uzupełnianie danych + wysyłka @
Podsyłam ci twój arkusz z makrem utworzonym wg mojej propozycji. W arkuszu „Przypominajka” znajduje się jeden przycisk wywołujący makro. Makro działa wg następującej zasady:
Uwagi dotyczące kodu makra.
Zaznaczyłeś, że używasz LibreOffice w wersji 24. Już od wersji 7 (i tylko w LibreOffice) wbudowana jest biblioteka ScriptForge. Wykorzystałem z niej funkcję SF_String.IsEmail(), która służy do sprawdzenia, czy określony ciąg znaków może zostać uznany za prawidłowy adres mailowy. Dlatego została przywołana na początku kodu.
Wykorzystałem także standardowo dodawaną bibliotekę „Tools”, w której znajduje się funkcja GetLastUsedRow(), zwracająca numer ostatniego użytego wiersza w arkuszu, który jest jej argumentem.
Użyłem też w programie nazw zmiennych w języku polskim, takie zmienne są zapisywane w nawiasach [RodzajUsługi] oraz [Treść].
Może będzie ci to odpowiadało.
- Identyfikuje aktualnie aktywny arkusz i jeśli nie jest to arkusz „Przypominajka”, wystawia komunikat „Niewłaściwy punkt wywołania makra” i przerywa działanie.
- Identyfikuje aktywny obszar komórek. Jeśli obszar aktywny składa się z kilku komórek lub kilku obszarów, wystawia komunikat „Aktywny jest co najmniej jeden obszar” i przerywa działanie.
- Pobiera nr wiersza aktywnej komórki i sprawdza, czy jest on mniejszy od ostatniego wiersza użytego w arkuszu lub równy temu wierszowi. Jeśli odpowiedzią jest FAŁSZ, wystawia komunikat „Aktywna komórka poniżej ostatniego wiersza danych” i przerywa działanie.
- Sprawdza, czy w aktywnym wierszu, w kolumnie R wpisany jest poprawny adres e-mailowy. Jeśli nie jest poprawny lub go nie wpisano, wystawia komunikat „Brak adresu e-mail lub jest błędny” i przerywa działanie.
- Na podstawie danych znajdujących się w wierszu tworzy treść tematu wiadomości oraz treść maila, a następnie wystawia komunikat „Wysyłasz maila do…” podając nazwę klienta z kolumny C. Komunikat pozwala wybrać opcję „Anuluj” co oznacza, że makro nie zostanie wysłane.
- Po tej sekwencji następuje aktywowanie wysyłania maila.
Uwagi dotyczące kodu makra.
Zaznaczyłeś, że używasz LibreOffice w wersji 24. Już od wersji 7 (i tylko w LibreOffice) wbudowana jest biblioteka ScriptForge. Wykorzystałem z niej funkcję SF_String.IsEmail(), która służy do sprawdzenia, czy określony ciąg znaków może zostać uznany za prawidłowy adres mailowy. Dlatego została przywołana na początku kodu.
Wykorzystałem także standardowo dodawaną bibliotekę „Tools”, w której znajduje się funkcja GetLastUsedRow(), zwracająca numer ostatniego użytego wiersza w arkuszu, który jest jej argumentem.
Użyłem też w programie nazw zmiennych w języku polskim, takie zmienne są zapisywane w nawiasach [RodzajUsługi] oraz [Treść].
Może będzie ci to odpowiadało.
- Załączniki
-
- 0_przypominajka o maile.ods
- (77.79 KiB) Pobrany 11 razy
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Super pomysł z tym jednym przyciskiem. Ale okazuje się, że makro pracuje tylko z Outlookiem, przy thunbird wyskakuje błąd
U nas z tego pliku korzystać będą zarówno uzytkownicy Thunderbirda i Outlooka. Ja np mam tylko pakiet Libre i Thunbirda (+ współpracownik), a włąściciel korzysta z pakietu MsOffice. I juz widzę, że rodzą się kolejne problemy z makrem.
Bo zaraz okaże się, że makro może pracować albo z Thunbirdem albo Outlookiem, lub Tylko z Libre Office Calc i juz Excel nie ogarnie go.
Chyba daruje sobię ten pkt z automatycznym wysyłaniem @, bo rodzi się za wiele problemów.
Dziękuje wszystkim za pomoc i pomysły.
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
Masz rację, że to makro nie wykona się w Excelu. To już prędzej makro z Excela wykona się w LibreOffice.
To makro nie wykona sie także w Apache OpenOffice ze względu na wykorzystanie biblioteki ScriptForge, której Apache nie ma.
Zakładając, że excelowcy nie będą wysyłali maili, przedstawiam ci wersję, która wysyła zarówno z Outlooka jak i ThunderBirda (a może i innych klientów poczty, ale ja mam tylko te dwa), bo proces jest uniwersalny. Wykorzystuje domyślnego klienta ustalonego w parametrach systemu. To makro wywołuje klienta pocztowego z wypełnionymi tekstami. Użytkownik musi zatwierdzić wysyłkę. Kod także znajduje się we wspomnianym opracowaniu Pitonyak-a
Moduł obsługujący wysyłkę przez Outlooka przekształciłem w samodzielne makro o nazwie MailByOutlook() i dołączyłem nowe makro SendByURL()
W Makrze głównym po komentarzu "Wysyłanie poczty" należy wskazać, które z nich ma zostać wykonane. W odesłanym pliku uaktywnione jest makro SendByURL().
To makro nie wykona sie także w Apache OpenOffice ze względu na wykorzystanie biblioteki ScriptForge, której Apache nie ma.
Zakładając, że excelowcy nie będą wysyłali maili, przedstawiam ci wersję, która wysyła zarówno z Outlooka jak i ThunderBirda (a może i innych klientów poczty, ale ja mam tylko te dwa), bo proces jest uniwersalny. Wykorzystuje domyślnego klienta ustalonego w parametrach systemu. To makro wywołuje klienta pocztowego z wypełnionymi tekstami. Użytkownik musi zatwierdzić wysyłkę. Kod także znajduje się we wspomnianym opracowaniu Pitonyak-a
Moduł obsługujący wysyłkę przez Outlooka przekształciłem w samodzielne makro o nazwie MailByOutlook() i dołączyłem nowe makro SendByURL()
W Makrze głównym po komentarzu "Wysyłanie poczty" należy wskazać, które z nich ma zostać wykonane. W odesłanym pliku uaktywnione jest makro SendByURL().
- Załączniki
-
- 0_przypominajka o maile w.1.ods
- Dodałem nowe makro do wysyłki przez ogólnego klienta pocztowego.
- (78 KiB) Pobrany 12 razy
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Jest super, coraz lepiej.Jermor pisze: ↑pt lut 28, 2025 1:30 pm Masz rację, że to makro nie wykona się w Excelu. To już prędzej makro z Excela wykona się w LibreOffice.
To makro nie wykona sie także w Apache OpenOffice ze względu na wykorzystanie biblioteki ScriptForge, której Apache nie ma.
Zakładając, że excelowcy nie będą wysyłali maili, przedstawiam ci wersję, która wysyła zarówno z Outlooka jak i ThunderBirda (a może i innych klientów poczty, ale ja mam tylko te dwa), bo proces jest uniwersalny. Wykorzystuje domyślnego klienta ustalonego w parametrach systemu. To makro wywołuje klienta pocztowego z wypełnionymi tekstami. Użytkownik musi zatwierdzić wysyłkę. Kod także znajduje się we wspomnianym opracowaniu Pitonyak-a
Moduł obsługujący wysyłkę przez Outlooka przekształciłem w samodzielne makro o nazwie MailByOutlook() i dołączyłem nowe makro SendByURL()
W Makrze głównym po komentarzu "Wysyłanie poczty" należy wskazać, które z nich ma zostać wykonane. W odesłanym pliku uaktywnione jest makro SendByURL().
Jeszcze tylko może uda mi się zrobić tak, żeby makro umieszczało sie w pliku, a nie w programie.
Testowałem na innym komputerze z Libre i Thunderbirdem i nie działa. Po sprawdzeniu makra okazało sie, że makro nie jest umieszczone w pliku, tylko w programie. Dlatego nie jest wyświetlane na innych komputerach, które korzystają z jednego pliku. Niestety nie moge znaleść w Twoim makrze linijki która by odpowiadała za to.
np jak miałem w poprzedniej wersji
Kod: Zaznacz cały
.ScriptCode = "vnd.sun.star.script:Standard.Module1.SendEmailFromRow?language=Basic&location=document"
ps. Jednak w drugim kompie były wyłączone makra oraz nie jest aktualny pakiet Libre. To juz sprawdzę w przyszłym tyg, czy to jest ten problem nie działania. Sprawdze też czy działa z Outlookiem na jeszcze innym innym kompie
Dziekuje za wszelką pomoc
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
Nie bardzo rozumiem, o co chodzi.
Makra w LibreOffice (w Apache OpenOffice też) zapisywane są w kontenerach zawierających biblioteki makr. Są trzy typy kontenerów:
Przesłany plik zawiera makra właśnie w kontenerze pliku, więc mogą zostać uruchomione na dowolnym komputerze.
Pliki, które zawierają makra we własnym kontenerze, a środowisko Office ma ustawione indywidualne opcje bezpieczeństwa makr, mogą być używane, ale uruchamianie makr może być blokowane. O tych zasadach napisałem tutaj: https://yestok.pl/ooo/y58.php
Makro może się nie wykonać poprawnie na komputerze, w którym nie ma biblioteki ScriptForge, dotyczy to wydań mniejszych od wersji 7, a te ciągle jeszcze mogą być używane.
Uwaga do ciebie. Niestety informacja typu
Dołączam jeszcze raz plik, tym razem z wersją 2. W treści przycisku wysyłki podkreślona jest litera "m", sygnalizuje ona, że można w trakcie pracy nacisnąć skrót klawiaturowy Lewy ALT+M co zostanie potraktowane tak, jak kliknięcie tego przycisku.
Makra w LibreOffice (w Apache OpenOffice też) zapisywane są w kontenerach zawierających biblioteki makr. Są trzy typy kontenerów:
- Kontener "Makra i okna dialogowe aplikacji", ten kontener dostarczany jest z oprogramowaniem Office i nie pozwala na dokonywanie w nim żadnych zmian.
- Kontener "Moje okna dialogowe i makra", ten kontener powstaje w konkretnej instalacji oprogramowania dla każdego logującego się do systemu użytkownika. W tym kontenerze można tworzyć swoje biblioteki makr i przechowywać w nich swoje makra. Makra z tego kontenera można wywołać w dowolnym komponencie pakietu Office.
- Kontener pliku, ten kontener powiązany jest z konkretnym plikiem i zawiera makra zazwyczaj niezbędne przy używaniu tego pliku. Makra mogą być uruchomione po otwarciu tego pliku.
Przesłany plik zawiera makra właśnie w kontenerze pliku, więc mogą zostać uruchomione na dowolnym komputerze.
Pliki, które zawierają makra we własnym kontenerze, a środowisko Office ma ustawione indywidualne opcje bezpieczeństwa makr, mogą być używane, ale uruchamianie makr może być blokowane. O tych zasadach napisałem tutaj: https://yestok.pl/ooo/y58.php
Makro może się nie wykonać poprawnie na komputerze, w którym nie ma biblioteki ScriptForge, dotyczy to wydań mniejszych od wersji 7, a te ciągle jeszcze mogą być używane.
Uwaga do ciebie. Niestety informacja typu
nic nie wniesie do wyjaśnienia sprawy. Równie dobrze mógłbym zapytać cię: chciałem uruchomić silnik w samochodzie i nie działa.
Dołączam jeszcze raz plik, tym razem z wersją 2. W treści przycisku wysyłki podkreślona jest litera "m", sygnalizuje ona, że można w trakcie pracy nacisnąć skrót klawiaturowy Lewy ALT+M co zostanie potraktowane tak, jak kliknięcie tego przycisku.
- Załączniki
-
- 0_przypominajka o maile w.2.ods
- (77.98 KiB) Pobrany 14 razy
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Już tłumaczę.
Plik będzie umieszczony gdzieś w necie na serwerze w chmurze, żeby każdy z pracowników miał dostęp do niego i mógł dopisywać pozycje i wysyłać przypomnieni (żebym nie tylko ja był obciążony tym).
Zauważyłem, że makro zapisuje się w aplikacji, czyli musze kopiowac te makro do każdego komputera żeby działało na tych kompach. Przy każdej zmianie w makrze, musze ponownie kopiować do każdego kompa.
Wiem, że są funkcje, aby makro zapisywało sie albo w konkretnym pliku, albo w programie.
Przykładem takim jest fragment kodu z makra, które pisałem z pomocą AI
Chyba, że są jakies ustawienia w Libre Office calc, co z automatu pisane makra zapisuje w dokumencie.
Jak wspomniałem wcześniej dla mnie makra to kosmos.
Dziękuje za wszelką pomoc.
Twoją i poprzedników sugestie umieściłem w testowym pliku. I szukam rozwiązania kolejnych błędów. Działa coraz lepiej.
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
Jeszcze raz podkreślam, że makro, które napisałem, znajduje się w pliku. Czyli każdy, kto otworzy plik, będzie miał dostęp do makra. Niczego nie trzeba kopiować. Jedynym ważnym zadaniem jest ustawienie zasad bezpieczeństwa uruchamiania makr, by makro mogło się w ogóle uruchamiać. W tym aspekcie takie ustawienia należy określić na każdym komputerze, na którym plik będzie otwierany. Na wszystkich innych komputerach plik może być obsługiwany, ale bez możliwości wysłania maila. W wersji LibreOffice 24+ makro przypisane do obiektu w dokumencie, w tym przypadku do przycisku, jest wskazywane przez zapis: Standard.Module1.Zawiadomienie (document, Basic). Standard — jest nazwą biblioteki w kontenerze, Module1 — jest nazwą modułu w tej bibliotece zawierającego makra, Zawiadomienie — jest nazwą podprogramu w module, document — mówi, że kontener znajduje się w dokumencie (application oznaczałoby, że w "Moje makra"), Basic — że skrypt jest napisany w Basicu.
Zapis, o jakim wspomniałeś, czyli .ScriptCode = "vnd.sun.star.script:Standard.Module1.SendEmailFromRow?language=Basic&location=document" jest stosowany przy przypisywaniu makra do działań dostępnych w oknie dialogowym "Dostosuj" (Narzędzia -> Dostosuj).
Zapis, o jakim wspomniałeś, czyli .ScriptCode = "vnd.sun.star.script:Standard.Module1.SendEmailFromRow?language=Basic&location=document" jest stosowany przy przypisywaniu makra do działań dostępnych w oknie dialogowym "Dostosuj" (Narzędzia -> Dostosuj).
Nie, takich funkcji nie ma. To autor makra decyduje, gdzie ono będzie zapisane. Jeśli zapisze je z plikiem, to może być uruchomione tylko po otwarciu pliku. Jeśli zapisze je w kontenerze "Moje makra", to makro być uruchomione jeśli kontener "Moje makra" w konkretnym komputerze zawiera kod tego makra. W tym sensie należy na każdym z nich do kontenera "Moje makra" skopiować to makro.
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Dzięki za info, posprawdzam osobiście na wszystkich kompach wersję Libre oraz czy są wyłączone zabezpieczenia makr. Bo do tej pory przekazałem, żeby inni sprawdzili czy działa.Jermor pisze: ↑śr mar 05, 2025 2:27 pm Jeszcze raz podkreślam, że makro, które napisałem, znajduje się w pliku. Czyli każdy, kto otworzy plik, będzie miał dostęp do makra. Niczego nie trzeba kopiować. Jedynym ważnym zadaniem jest ustawienie zasad bezpieczeństwa uruchamiania makr, by makro mogło się w ogóle uruchamiać. W tym aspekcie takie ustawienia należy określić na każdym komputerze, na którym plik będzie otwierany. Na wszystkich innych komputerach plik może być obsługiwany, ale bez możliwości wysłania maila...
Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
W związku z technologią obsługi zastanawiam się, czy masz jakieś "zabezpieczenie" przed wielokrotnym wysłaniem maila. Np. użytkownik1 wyśle maila przypominającego a dwa dni później uzytkownik2 także wyśle takiego maila, bo będzie widział, że zbliża się termin.
Tu praca może zależeć od tego czy plik jest używany w trybie współdzielenia arkusza, czy nie. W tym drugim trybie tylko jeden użytkownik może otworzyć plik i go edytować. Inni, którzy zechcą taki plik otworzyć podczas gdy został on już otwarty, będą mieli dostęp do pliku w trybie "Tylko do odczytu" albo "Otwórz jako kopię".
W pierwszym trybie kilku użytkowników może otwierać i używać pliku równolegle. Zaprogramowane są specjalne reguły zapisywania zmian dokonanych przez użytkowników uaktywniane podczas próby zapisu.
W tej sytuacji byłoby sensowne wstawianie w określoną komórkę znacznika, że mail został już wysłany. Musiałoby to realizować makro wysyłające. A sam znacznik po ustawieniu byłby widoczny np. do 30 dni przed upływem terminu a po minięciu tego okresu kasowany. Mógłby w ten sposób blokować przypadkową wysyłkę maila.
No ale to tylko takie propozycje.
Tu praca może zależeć od tego czy plik jest używany w trybie współdzielenia arkusza, czy nie. W tym drugim trybie tylko jeden użytkownik może otworzyć plik i go edytować. Inni, którzy zechcą taki plik otworzyć podczas gdy został on już otwarty, będą mieli dostęp do pliku w trybie "Tylko do odczytu" albo "Otwórz jako kopię".
W pierwszym trybie kilku użytkowników może otwierać i używać pliku równolegle. Zaprogramowane są specjalne reguły zapisywania zmian dokonanych przez użytkowników uaktywniane podczas próby zapisu.
W tej sytuacji byłoby sensowne wstawianie w określoną komórkę znacznika, że mail został już wysłany. Musiałoby to realizować makro wysyłające. A sam znacznik po ustawieniu byłby widoczny np. do 30 dni przed upływem terminu a po minięciu tego okresu kasowany. Mógłby w ten sposób blokować przypadkową wysyłkę maila.
No ale to tylko takie propozycje.
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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: auto uzupełnianie danych + wysyłka @
Potwierdzam, że makra @Jermor są umiejscowione w danym pliku i mogą działać na różnych stanowiskach. Z tym że, w dostarczonych plikach 0_przypominajka o maile(...) są pozostawione (niepotrzebnie) trzy przyciski Wyślij @ wstawione ręcznie , których kliknięcie wywołuje makro zapisane na danym stanowisku. To one wołają o braku makra, ot taka oczywistość pozostawiona po twoich próbach - może tu tkwi twój problem.
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: auto uzupełnianie danych + wysyłka @
Och, O takich problemach nie myślałem.Jermor pisze: ↑śr mar 05, 2025 3:54 pm W związku z technologią obsługi zastanawiam się, czy masz jakieś "zabezpieczenie" przed wielokrotnym wysłaniem maila. Np. użytkownik1 wyśle maila przypominającego a dwa dni później uzytkownik2 także wyśle takiego maila, bo będzie widział, że zbliża się termin.
Tu praca może zależeć od tego czy plik jest używany w trybie współdzielenia arkusza, czy nie. W tym drugim trybie tylko jeden użytkownik może otworzyć plik i go edytować. Inni, którzy zechcą taki plik otworzyć podczas gdy został on już otwarty, będą mieli dostęp do pliku w trybie "Tylko do odczytu" albo "Otwórz jako kopię".
W pierwszym trybie kilku użytkowników może otwierać i używać pliku równolegle. Zaprogramowane są specjalne reguły zapisywania zmian dokonanych przez użytkowników uaktywniane podczas próby zapisu.
W tej sytuacji byłoby sensowne wstawianie w określoną komórkę znacznika, że mail został już wysłany. Musiałoby to realizować makro wysyłające. A sam znacznik po ustawieniu byłby widoczny np. do 30 dni przed upływem terminu a po minięciu tego okresu kasowany. Mógłby w ten sposób blokować przypadkową wysyłkę maila.
No ale to tylko takie propozycje.
Jesli wyskoczy błąd, że plik jest otwarty gdzie indziej, to może i lepiej

Ale z tym oznaczeniem, że juz został wysłany @ z przypomnieniem to tez ciekawy pomysł.
Na dzień dzisiejszy jestem zadowolony z tego co mam, co dzięki Wam udało sie zrobić. Ja tylko posklejałem


Windows 10
LibreOffice 25.2.0.3.
LibreOffice 25.2.0.3.
Re: auto uzupełnianie danych + wysyłka @
Wysyłam ci jeszcze bardziej zmodyfikowana wersję (3). Zmodyfikowałem twój arkusz w ten sposób, że usunąłem występujące w nim przyciski w wierszach kolumny U i tę kolumnę przeznaczyłem na oznakowanie, że mail został już wysłany, pojawia się w niej tekst "Wysłany".
Zmodyfikowałem makro w ten sposób, że po wysłaniu maila w komórce kolumny U we właściwym wierszu wstawiany jest tekst "Wysłany". Próba ponownego wysłania maila generuje komunikat "Mail został już wysłany".
Dopiero usunięcie wpisu w komórce kolumny U pozwoli wysłać maila.
Współpracownikom należałoby zakazać wysyłania maili jeśli wczytali plik jako "Tylko do odczytu" albo kopię. Dlaczego? W momencie kiedy wczytują taki plik, pobierają go w stanie, w jakim utrzymuje go pierwszy użytkownik. Może on w międzyczasie wysyłać powiadomienia, ale pozostali użytkownicy dowiedzą się o tym, dopiero gdy ten pierwszy zamknie swoją sesję, zapisując dane. Z kolei pierwszy użytkownik powinien kończyć sesję od razu po wykorzystaniu pliku. Jeśli zostawi go otwartym i pójdzie na przerwę, to w tym czasie nikt nie będzie mógł otworzyć go jako pierwszy.
Zmodyfikowałem makro w ten sposób, że po wysłaniu maila w komórce kolumny U we właściwym wierszu wstawiany jest tekst "Wysłany". Próba ponownego wysłania maila generuje komunikat "Mail został już wysłany".
Dopiero usunięcie wpisu w komórce kolumny U pozwoli wysłać maila.
Współpracownikom należałoby zakazać wysyłania maili jeśli wczytali plik jako "Tylko do odczytu" albo kopię. Dlaczego? W momencie kiedy wczytują taki plik, pobierają go w stanie, w jakim utrzymuje go pierwszy użytkownik. Może on w międzyczasie wysyłać powiadomienia, ale pozostali użytkownicy dowiedzą się o tym, dopiero gdy ten pierwszy zamknie swoją sesję, zapisując dane. Z kolei pierwszy użytkownik powinien kończyć sesję od razu po wykorzystaniu pliku. Jeśli zostawi go otwartym i pójdzie na przerwę, to w tym czasie nikt nie będzie mógł otworzyć go jako pierwszy.
- Załączniki
-
- 0_przypominajka o maile w.3.ods
- (78.06 KiB) Pobrany 15 razy
AOO 4.1.15, LO 24.8.5 (x64) na Windows 11 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.