makro i podpięcie pod przycisk

Użytkowanie arkusza kalkulacyjnego
poszukiwacz20
Posty: 1
Rejestracja: ndz lut 28, 2021 2:55 am

makro i podpięcie pod przycisk

Post autor: poszukiwacz20 »

Dzień dobry, mam problem z dwoma zadaniami.
Jedno to przekształcić makro z excela na openofficowy basic, a drugie to podpiąc to pod przyciski.
W pierwszym przypadku chciałem utworzyć kod podający pierwszy wolny wiersz. DO tej pory korzystalem w excelu z operacji Cells(Rows.Count, 1).End(xlUp).Row - przechodziłem do ostatniego wiersza, a potem za pomoca end i skok do gory trafiałem na ostatni niepusty wiersz. Jaki jest odpowiednik tego rozwiazania w openoffice ?
Drugie moje pytanie jak podpiac makro pod przyciski - próbuje przez formanty/ tryb projektu - wybieram przycisk, tam na drugiej zakładce wydarzenia mam np klawisz nacisniety - ale wtedy wyskakuje mi informacja o zainstalowaniu JRE i wtedy Calc się zawiesza. (JRE - zainstalowałem, ale tak jakby Calc nie widział tego...)
OpenOffice 4.1.9, WIn 10
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: makro i podpięcie pod przycisk

Post autor: Jermor »

Na początek. Zastanów się nad korzystaniem z LibreOffice. Oprogramowanie to ma rozbudowane możliwości bezpośredniego używania makr VBA w Basicu. Nie jest to problem całkowitej zgodności, ale trochę rzeczy jest zrobione.

Do znalezienia ostatniego użytego wiersza albo kolumny w wybranym arkuszu napisałem takie makro:

Kod: Zaznacz cały

Function GetLastUsed(sArkusz as String, Optional sCo As string) as Long
'---------------------------------------------------
	REM Zwraca w zależności od argumentu "sCo", ostatni numer wiersza(sCo->"W") albo kolumny (sCo->"K") w arkuszu o nazwie sArkusz.
	REM Niepodanie arkumentu "sCo" albo podanie innych symboli niż "W" albo "K" jest traktowane jak podanie "W".
	REM Pominięcie nazwy arkusza generuje wynik -999, sygnalizujący błąd.
	REM Makro powstało na podstawie funkcji GetLastUsedRow() z biblioteki Tools (moduł Misc) kontenera Makra OpenOfficce
	REM Author: Jermor. Polskie forum Apache OpenOffice i LibreOffice (2021)
	REM Przykład i=LastUsed("Mój arkusz";"k")
'---------------------------------------------------
Dim oCell As Object, oArkusz as Object, oCursor As Object
Dim aAddress As Variant
On Local Error GoTo nic
oArkusz=ThisComponent.Sheets.GetByName(sArkusz)
If IsMissing(sCo) Then sCo="W"
sCo=UCase(sCo)
oCell = oArkusz.GetCellbyPosition(0, 0)
oCursor = oArkusz.createCursorByRange(oCell)
oCursor.GotoEndOfUsedArea(True)
aAddress = oCursor.RangeAddress
With aAddress
	Select Case sCo
		Case "W"
		GetLastUsed = .EndRow
		Case "K"
		GetLastUsed = .EndColumn
		Case Else
		GetLastUsed = .EndRow
	End Select
End With
Exit Function
nic:
GetLastUsed=-999
End Function
Co do JRE. Sprawdź, czy w opcjach masz ustawione korzystanie ze środowiska Java ("Narzędzia -> Opcje -> OpenOffice -> Java").
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.
Awatar użytkownika
Rafkus
Posty: 515
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: makro i podpięcie pod przycisk

Post autor: Rafkus »

Innym powodem może być może być zainstalowana zła wersja javy. Wiem, że BASE wymaga jawy 32 bitowej (przy 64 nie widzi jej) - może w calcu jest podobnie.
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: makro i podpięcie pod przycisk

Post autor: Jermor »

Z tego co kojarzę, Java standardowo instaluje się w wersji 32-bitowej. Apache OpenOffice jest wydany tylko w wersji 32-bitowel. LibreOffice występuje także w wersji 64-bitowej, no ale trzeba mieć wówczas system operacyjny 64-bitowy. W takim systemie muszą być zainstalowane dwa wydania Javy, 32-bitowa dla aplikacji 32-bitowych i 64-bitowa dla aplikacji 64-bitowych.
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.
ODPOWIEDZ