< návrat zpět

MS Excel


Téma: Neukladaj zmeny, skry listy rss

Zaslal/a icon 18.8.2014 16:26

Márne sa trápim s riešením problému:
1. Užívateľ chce ukončiť prácu so súborom a tento zavrie.
2. Potrebujem, aby napriek tomu, že užívateľ sa rozhodne neukládať zmeny, došlo k tomu, aby sa niektoré listy v súbore skryli a zostali skryté, t.j. súbor bol uložený pre ďalšie použitie so skrytými listami ale bez iných zmien, ktoré užívateľ uložiť nechcel...

Inými slovami:
Pri zavretí súboru pri ukladaní zmien má Excel postupovať podľa toho, čo mu užívateľ určí v dialógovom okne (Uložiť zmeny Áno/Nie) ovšem s tým, že listy 1,2 a 3 sa majú skryť a toto nie je dovolené užívateľovi meniť.

Tuší niekto, či je toto riešiteľné?

Zaslat odpověď >

#021200
avatar
ja by som to riesil tym sposobom ze do eventu "pri skonceni" by aktualny subor zavrel bez save a potom ho otvoril zas a skryl by tam sheete a save

... zavretie dokumentu nezatvara excel :)

edit: teraz ma napadlo ked sa makro bude nachadzat v tom subore tak nebude pokracovat .... takze makro sa musi nachzadzat v Add-insecitovat
#021201
avatar
A toto nestačí? Keď to neuloží, tak sa predsa nič nedeje. Teda tie listy by mali bať na začiatku skryté.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("Hárok2").Visible = Hidden
End Subcitovat
icon #021202
avatar
@Paloo:teraz ma napadlo ked sa makro bude nachadzat v tom subore tak nebude pokracovat
To som si tiež myslel, ale urobil som pokus:
1. V evente BeforeClose nastavím listy ako skyté. Zároveň je v ňom inštrukcia, že má uložiť zmeny.
2. Z eventu AfterSave volám cez Application.Ontime s odkladom 15 sekúnd makro (v tom samom súbore), ktoré znovu nastavuje dané listy ako viditeľné.

Súbor som manuálne uložil a hneď zavrel. 15 sekúnd rozhodne neuplynulo. Na moje prekvapenie sa súbor po 15 sekundách otvoril - Excel počkal 15 sekúnd a spustil makro z medzitým už zavretého súboru...

Add in pre tento prípad nechcem, mám na to dobré dôvody.

@marjankaj: tak, ako píšeš, to samozrejme ide. Má to ale háčik: chcel som, aby listy zostali po uložení viditeľné.
Ide o to, že potrebujem užívateľa donútiť povoliť makrá a sprístupniť listy len v prípade, že makrá sú povolené (súbor bude umiestnený na zdieľanom disku a budú k nemu mať prístup rôzni užívatelia). Pokiaľ to urobím cez BeforeSave, tak sa listy skryjú i vtedy, keď si užívateľ bude priebežne ukladať rozpracovanú prácu, súbor teda nechce zavrieť.
Nakoniec som ale použil BeforeSave a do kódu pridal inštrukciu, ktorá zobrazí tlačítko s makrom, ktoré umožní opätovné zobrazenie listov skrytých počas udalosti BeforeSave. Po kliknutí na tlačítko sa zobrazia dané listy a tlačítko samotné sa skryje. Užívateľ teda bude musieť občas kliknúť na tlačítko, nie som z riešenia úplne happy, ale na nič lepšie som neprišiel 7citovat
#021204
avatar
Otázka. Proč to znovu zobrazení Listů neřešíš v After_Save, jak si uvedl. K reOpen ani OnTime není přece žádný důvod. Jestli se nepletu tak na disku je WBook se skrytými Listy. Pokud se ukládá, tak se skrytými Listy. Po úspěšném Save přece můžeš ty Listy znovu zobrazit.
Nebo mi něco uniká?citovat
icon #021205
avatar
@kp57
...a to som pritom bol sám k riešeniu tak blízko 1 . Presne ako píšeš, díky moc. Funguje to:Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Sheet1.Visible = xlSheetVisible
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheet1.Visible = xlSheetVeryHidden
End Sub
citovat
#021206
avatar
@AL
To aftersave asi funguje iba od excel 2010 a vyššie.
No mne nebolo celkom jasné, čo presne chceš.citovat
icon #021207
avatar
@marjankaj
mal som včera opäť mentálny blok. Rozsvietilo sa mi až po príspevku kp57citovat
#021234
avatar
Pro starší verze by to mohlo vypadat nějak takto:Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
Application.EnableEvents = False
Sheets("List2").Visible = xlSheetHidden
ThisWorkbook.Save
Sheets("List2").Visible = xlSheetVisible
Application.EnableEvents = False
End Sub
citovat
icon #021235
avatar
to nevyskúšam, asi to ale fungovať bude, mám ale za to, že na konci nemá byť Application.EnableEvents = False ale True...citovat
#021236
avatar
Jasně že TRUE (překlep).citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje