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...)
makro i podpięcie pod przycisk
-
- Posty: 1
- Rejestracja: ndz lut 28, 2021 2:55 am
makro i podpięcie pod przycisk
OpenOffice 4.1.9, WIn 10
Re: makro i podpięcie pod przycisk
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:
Co do JRE. Sprawdź, czy w opcjach masz ustawione korzystanie ze środowiska Java ("Narzędzia -> Opcje -> OpenOffice -> Java").
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
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.
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: makro i podpięcie pod przycisk
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
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: makro i podpięcie pod przycisk
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.
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.