Strona 1 z 1

Uruchomienie okna przy otwarciu dokumentu.

: pn gru 07, 2020 9:43 pm
autor: michal.s
Witam Wszystkich bardzo serdecznie.
Mam pytanie.
Czy znajdę gdzieś na forum temat w którym poruszono kwestię uruchamiania makra otwierającego okno do wprowadzenia danych?
Mam taki projekt, w którym notorycznie moi współpracownicy nie uzupełniają pola miesiąc i rok.
Na ten moment poradziłem sobie tak, że biją po oczach te dwa pola... okazuje się, że tylko mnie biją :lol:
Żadna forma motywacji nie pomaga!!!
Zostaliście moją ostatnią deską ratunku ;)

Myślę, że rozwiązanie, gdy ktoś otowrzy dokument i z rozwijanej listy będzie musiał wybrać miesiąc i rok rozwiąże moj problem i utrze nosa moim niesfornym współpracownikom :D
Przechwytywanie.PNG
Przechwytywanie.PNG (8.11 KiB) Przejrzano 5194 razy

Re: Uruchomienie okna przy otwarciu dokumentu.

: pn gru 07, 2020 11:07 pm
autor: Rafkus
Może ten wątek pomoże:
https://forum.openoffice.org/pl/forum/v ... =28&t=5408
W dokumencie Kopia Rejestr - Kopia-3b.ods (link do niego: https://forum.openoffice.org/pl/forum/d ... hp?id=2996) jest stworzone okno do wprowadzania danych.

Innym sposobem może być zastosowanie Poprawności danych z menu Dane - nie pozwolić na wprowadzenie istotnych danych dopóki te mmniej ważne nie zostaną wprowadzone.
Zostawiam plik z zastosowaną metodą, spróbuj wpisać dane do żółtych komórek

Re: Uruchomienie okna przy otwarciu dokumentu.

: wt gru 08, 2020 8:26 am
autor: Rafkus
I kolejne rozwiązanie:
Przypisz poniższe makro do zdarzenia Zapisz Dokument w twoim pliku. Wówczas podczas zapisywania pliku uruchomi się to makro i sprawdzi czy do komórek B2 i C2 w Arkuszu1 zostały wprowadzone jakieś dane. Jeśli nie to zostaje wywołane okienko do wprowadzenia danych i nie pozwolą na zamknięcie dopóki nie poda się poprawnych wartości.

Kod: Zaznacz cały

Sub dane
  Dim Arkusz As Variant
  Dim komorka1,komorka2 As Variant
  dim i as integer

  Arkusz = ThisComponent.Sheets("Arkusz1") 
  komorka1 = Arkusz.getCellRangeByName("B2")
  komorka2 = Arkusz.getCellRangeByName("C2") 

  if komorka1.string="" then  
    Do
      i = inputBox ( "Podaj numer miesiąca: liczbę z przedziału 1÷12" , "UWAGA", Month(Date))
      'Month(Date) - zwraca numer aktualnego miesiąca, w powyższej instrukcji będzie to wartość domyślna. 
    Loop until i>0 and i<13
  komorka1.value=i
  endif
  
  if komorka2.value=0 then
    Do
     i = inputBox ( "Podaj Rok z przedziału 2000÷2030" , "UWAGA", Year(Date) )
      'Year(Date) - zwraca aktualny rok, w powyższej instrukcji będzie to wartość domyślna. 
    Loop until i>2000 and i<2030
  komorka2.value=i
  endif
End Sub
Oczywiście podaj swoje dane: nazwę arkusza i komórki docelowe.

PS. A jeśli wystarczy tylko uzupełnić dane domyślne (do pewnych komórek wpisać tylko bieżący miesiąc i rok) to wystarczy takie makro:

Kod: Zaznacz cały

Sub dane2
  Dim Arkusz As Variant
  Dim komorka1,komorka2 As Variant
  dim i as integer

  Arkusz = ThisComponent.Sheets("Arkusz1")   
  komorka1 = Arkusz.getCellRangeByName("B2")
  komorka2 = Arkusz.getCellRangeByName("C2") 

  if komorka1.string="" then komorka1.value = Month(Date)  
  if komorka2.string="" then komorka2.value = Year(Date)
End Sub

Re: Uruchomienie okna przy otwarciu dokumentu.

: wt gru 08, 2020 1:24 pm
autor: Jermor
Sądzę, że właściwsza jest pierwsza propozycja @Rafkus i to bez podawania domyślnej podpowiedzi.
michal.s pisze:...notorycznie moi współpracownicy nie uzupełniają pola miesiąc i rok.
Charakter przedstawionej ilustracji, świadczy o tym, że tabela jest raczej wypełniana danymi z innego niż bieżącego miesiąca. Przy takim podejściu współpracowników, i zaproponowaniu danych domyślnych, nacisną po prostu OK i zatwierdzą niepoprawne dane.
Podpiął bym to makro pod akcję "Uruchom aplikację""Otwórz dokument", czyli aby nie pozwalało niczego wprowadzać dopóty, dopóki nie zostanie wprowadzona właściwa data.
Dlaczego tak? Bo ludzie pod koniec pracy, myślą już o innych sprawach i są mniej skoncentrowani. Mogą zatem popełnić błędy a dane, o które chodzi @michal.s, są kluczowe dla zestawienia.

Re: Uruchomienie okna przy otwarciu dokumentu.

: śr gru 09, 2020 10:39 pm
autor: michal.s
Dziękuję Rafkus bardzo cenne informacje.
Twoja wersja kody z opcją uruchamiania przy zapisie wydaje mi się bardzo dobra i myślałem, że już temat zamkniemy, ale...
No właśnie...
Rafkus pisze:Przypisz poniższe makro do zdarzenia Zapisz Dokument w twoim pliku.
Próbowałem tego na różne sposoby i poległem :(
Jak przypisać makro do zdarzenia?
Próbowałem w ten sposób, ale nie ma do wyboru makra, które jest w pliku.
Przechwytywanie.PNG
Makro działa bez żadnego problemu przy wywołaniu go bezpośrednio z okna 'wykonaj makro'

Re: Uruchomienie okna przy otwarciu dokumentu.

: śr gru 09, 2020 10:51 pm
autor: Rafkus
:shock: :shock:
Nie spotkałem się z takim problemem, więc ciężko mi coś doradzić. Zazwyczaj makro przypisuję tak jak pokazałeś to na dołączonym obrazie, więc jestem zdziwiony że w oknie dialogowym Wybór makra w Bibliotece nie ma widocznego jeszcze twojego pliku.
A czy naprawdę używasz jeszcze OpenOffice 3.3??

Re: Uruchomienie okna przy otwarciu dokumentu.

: czw gru 10, 2020 12:27 pm
autor: Jermor
Używasz Apache OpenOffice. Warto zastanowić się nad zmianą i migracją do LibreOffice.
Może nawet nie dlatego, że Libre jest lepszy (bo jest) ale dlatego, że pracuje nad nim większy zespół i szybciej pojawiają się łatki.
@Jan_J z lekka ironią napisał o nowej wersji Apache, w której do Calca wprowadzono 4 modyfikacje, po roku stagnacji.
Ale do rzeczy. Coś jest schrzanione w Apache. U mnie także nie pojawiają się kontenery biblioteki w plikach, w sytuacji jaką opisałeś.
Możesz jednak przypisać makro wybierając polecenie "Narzędzia -> Dostosuj -> zakładka Zdarzenia".