Zde je makro:
Vytvoření nové zašifrované knihovny
V dialogovém okně NÁSTROJE > MAKRA > SPRÁVCE MAKER > BASIC...> ORGANIZÁTOR > KARTA KNIHOVNY > roletka UMÍSTĚNÍ > vybrat knihovnu pod jménem SEŠITU ve kterém má být knihovna (pozor je tam výběr na nadřazení knihovny) > tlačítko NOVÁ do které zadáte název pro novou knihovnu (nesmí být název "Standard", ani název exitující šifrované knihovny).
Po tomto hned raději zavřete dialog organizátoru. Máte vytvořenou novou knihovnu kterou uvidíte v okně Basicu pod knihovnou Standard. Pokud ji neuvidíte, stala se chyba. Zatím je odemčená.
Otevřete okno module1 z čerstvě vytvořené knihovny. Tam zkopírujete následující makro, uložte. Můžete otestovat volání z knihovny standard a popřípadě přizpůsobit.
Dim jmeno, heslo as string
Sub NazevMakra 'Zvolit takové, aby nemělo souběh s jinými makry zejména v té primární zašifrované knihovně.
Dim Doc As Object
Dim Sheet As Object
Dim Cell1, Cell2 As Object
Doc = ThisComponent
jmeno = InputBox("Zadej uživatelské jméno")
heslo = InputBox("Zadej přístupové heslo")
Sheet = Doc.getSheets().getByName("Role")
For i = 0 To 100
Cell1 = Sheet.getCellByPosition( 0 , i )
Cell2 = Sheet.getCellByPosition( 1 , i )
IF Cell1.string = jmeno And Cell2.string = heslo Then
Call SpustitZaheslovaneMakro(heslo)
Exit sub
end IF
Next i
MsgBox("Špatné uživatelské jméno, nebo heslo", "Chyba")
End Sub
Po odzkoušení můžete novou knihovnu uzmknout výše popsaným postupem, jen místo NOVÁ (knihovna), zvolíte HESLO. Po zadání hesla je lepší sešit restartovat (neuložené změny kdysi nefungovaly ale i tak je lepší sešit vypnout a hned znovu spustit. Následně otestujte zda uzamčení funguje. Když v okně IDE poklepete na novou knihovnu musí zobrazit dialog hesla.
Tak to je první fáze. Druhá fáze je vytvoření sešitu ROLE, kde budou uživatelská jména a vedle nich hesla takto:
ID uživatele ve sloupci může být jméno. Lepší jsou pro člověka čísla, ale ta používám ve sloupci B jako hesla. Skutečná jména by tam být neměla aby člověk s nečistými úmysly nemohl snadno navolit jméno kolegy a pak mu stačí testovat jen heslo. Mohou to být i čísla, ale musel by se přepsat kód Cell.string na Cell.value.
sloupecA[[RJRZ], sloupecB[314542]
sloupecA[NDROT], sloupecB[970529]
sloupecA[YXYOK], sloupecB[508395]
sloupecA[HKVHW], sloupecB[398581]
sloupecA[[KMXC], sloupecB[511388]
sloupecA[UUWXU], sloupecB[035779]
sloupecA[[TQGY], sloupecB[866051]
sloupecA[YDYRQ], sloupecB[343888]
sloupecA[JQADY], sloupecB[365604]
sloupecA[LZSNT], sloupecB[456968]
sloupecA[KYCAA], sloupecB[603248]
sloupecA[XBLYJ], sloupecB[755436]
sloupecA[QDJCN], sloupecB[878795]
sloupecA[RBIKC], sloupecB[652612]
sloupecA[FYHAG], sloupecB[942417]
Může to být i obráceně ale vždy by to měly být textové znaky (i když půjde o čísla - předejte na začátek například R12A - například místo RUDA). Sloupec A seřaďte vzestupně (kvůli lepšímu prohledávání zejména u dlouhých seznamů). Do sloupců C a dále můžete přidat skutečné jméno a podobně.
Nakonec si můžete nahrát záznamníkem makro na uzamčení a skrytí listu ROLE. Nesmíte ho zapomenout otevřený a odejít od stroje. Vždy znovu pečlivě zkontrolujte, zda je okno ROLE skryté a ještě také že jsou uzamčené změny. Můžete také uzamknout celou strukturu sešitu a pak nikdo nemůže otevřít ani náhodou skrytý sešit, byť uzamčený.
K tomu to návrhu jem dělal mnoho variant. Například místo InputBoxů 1 dialogové okno kde se místo znaků zobrazovaly tečky jak je u hesel obvyklé. Další varianta uchovávala i přístupovou databázi v makru a ne v sešitě protože dříve se stávalo, že zaheslované listy i skryté listy se po otevření v Excelu zobrazily bez uzamčení a neskryté.
Otestujte a uvidíte zda to takto stačí. Šlo by to jinak na dost různých způsobů.
Editoval neutr (18. 8. 2025 10:44:54)
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ