Učinil jsem pokus. Nemám žádný soubor, který by byl sdílený tímto způsobem. Respektive mám, ale jsem 4 a tak není problém si ty lidi obvolat, takže to nemám odzkoušeno. Nicméně jsem na to narazil již několikrát a vždycky jsem si říkal, jestli by to nešlo řešit externě. To mi totiž umožní následující věci:
- mít sešit bez kódu
- mít na pozadí kód, který neustále kontroluje, zda je soubor otevřený, aniž by to ovlivnilo samotnou práci v excelu ("nekonečná" smyčka).
Taky se mi nelíbí onen zápis uživatele do buňky - to totiž znamená nutnost okamžitého uložení sešitu. U malého souboru to problém není, ale u většího už je to viditelná a zbytečná operace. Takže to řeším textovým souborem. To může mít další výhodu, že si ho lze všimnout v adresáři a pro zjištění, kdo má sešit otevřen mi stačí kouknout do texťáku.
No a teď co znamená externě. Je tu možnost napsat si jednoduchou a tedy i spolehlivou aplikaci ve Visual Studiu. To tu nemám, tak jsem to zkusil přes VBScript. Ten lze zase snadno editovat v textovém editoru a rychle upravit na kterémkoliv PC bez nutnosti instalace čehokoliv. Naopak zase používám něco, co je určeno pro krátké a rychlé operace na operaci dlouhodobou a tak nevím, zda se na to lze spolehnout. To je třeba odzkoušet.
Takže ukázka -
Sešit je nutné otevřít poklikáním na soubor scriptu (WorkbookOpen.vbs). Ten zpřístupní pracovní listy a skryje list se zprávou, že takto ne. Poté neustále kontroluje, zda je sešit otevřen. Po jeho uzavření jej ještě jednou skrytě otevře, skryje pracovní listy a zviditelní ten se zprávou a uloží.
Pokud tedy otevřete Sešit1 - nebude možné v něm pracovat. Pro některé - samozřejmě, kdy by chtěl, dokázal by - ale to se prostě nepředpokládá.
Nejdříve je třeba editovat soubor skriptu a upravit cestu k souboru.
Příloha: 27971_test.zip (7kB, staženo 37x) citovat