< návrat zpět

MS Excel


Téma: Automatické otevření makra VBA rss

Zaslal/a 14.7.2014 8:53

Jak udělat, aby se makro ve VBA otevřelo automaticky při otevření sešitu? Ve VBA project je u soboru v listu toto makro:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$J$1" Then Exit Sub
ActiveSheet.Name = Range("j1").Value
End Sub
a potřebuji, aby se otevřelo při zabazpečení středním a vyšším. Díky M.

Zaslat odpověď >

#020512
avatar
Automatické spuštění makra při otevření sešitu je možné s využitím události Workbook_Open, která se vkládá do ThisWorkbook.

Kód do ThisWorkbook:
Private Sub Workbook_Open()
'Zavolání makra:
Call makro
End Sub
Kód makra do modulu:
Sub makro()
'Kód makra...
End Sub
Ovšem makro se ti stejně spustí pouze v případě, že uživatel povolí makra (pokud nemá nastaveno zabezpečení na nízké = automatické spuštění). Toto obejít nelze, je to z důvodu bezpečnosti (ochrana před škodlivým kódem).
P.citovat
#028738
avatar
Další možností je, že kód umístíš do kteréhokoliv Modulu (např.Modul1) a vložíš ho mezi

Sub Auto_Open()
´tvůj kód
End Sub

Ovšem i zde platí o ochraně to samé, co psal Pavlus.
Ochrana před nebezpečným kódem má vyšší prioritu, pokud si ho uživatel sám a na vlastní riziko nezmění předem na nízké = žádná ochrana.citovat
#028749
avatar
Snaha ochránit sešit pomocí maker před zakázanými manipulacemi je přirozená. Povolení maker při otvírání sešitu si ale nelze vynutit. Zdá se, že to prakticky ochranu sešitu pomocí maker znehodnocuje. Přesto existuje technika, která umí tento gordický uzel rozetnout. Přestože i na ni lze vyzrát, je ta technika relativně spolehlivá.
Stejně jako existuje událost Workbook_Open, existuje i událost Workbook_BeforeClose. S její pomocí můžeme dosáhnout slušného zabezpečení sešitu nastavením vlastnosti VeryHidden všem datovým listům. V sešitě ale musí zůstat alespoň jeden list otevřený. Proto do sešitu přidáme jeden list s oznámením, že bez spuštěných maker sešit nebude pracovat. Při zavírání sešitu zobrazíme pouze tento list, zatímco zbývající listy sešitu skryjeme jako VeryHidden. Listy, skryté VeryHidden, lze zobrazit právě jenom pomocí VBA. A to je podstata použité finty.
Událost Workbook_Open napíšeme tak, že datové listy naopak uvede do stavu Visible (a ten pomocný list schová). Aby Workbook_Open proběhla, musíme makra povolit. Když se naopak pokusíme sešit otevřít bez povolených maker, datové listy zůstanou VeryHidden a my uvidíme jen tu oznamovací ceduli. V tomto stavu prakticky zůstane obsah sešitu nedostupný, a tedy ochráněný. Bez povolených maker proto spuštění sešitu ztrácí jakýkoliv smysl.citovat
#028758
avatar
@vovka.
Nie je to celkom pravda že sa veryhidden dá zobraziť iba s pomocou makra.
Jednotlivé listy sa dajú zobraziť ALT+F11 -> F4 -> vyberieš list a nastaviš vlastnosť visible.citovat
#028759
avatar
to marjankaj:
tak to jsem nevěděl a naštěstí to nevědí ani ti, pro které jsem touto technikou jejich sešity vybavil. Oni to pokládají za neprůstřelné (i když sám dobře vím, že to jde obejít i jinak).
Prostě stále platí stará pravda, že Excel není bezpečné datové prostředí. Přesto se pokoušíme v uživatelích alespoň vyvolat pocit bezpečí. Ostatně, lidé si své byty také opatřují složitými dveřními zámky a dveřmi, které nejdou vyháčkovat, a přitom zpravidla stačí malá dlažební kostka do zvoleného okna...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