Stránka 1 z 1
EXCEL- Otevření souboru bez spuštění makra Workbook_open
Napsal: 15 říj 2014 12:53
od birgis
Ahoj,
prosím o radu.
Mám soubor kde mám vložené makro Workbook_Open. To má za úkol načíst data z DB, aktualizovat kont. tabulky, odeslat emaily a zavřít soubor.
Tento soubor mám napojený na naplánované ulohy ve win.
Dá se nějak upravit, aby při spuštění jinak, než z naplánované ulohy se makro WB_open nespustilo?
Když chci soubor editovat, tak je makro tak rychlé, že ho mnohdy nestihnu zastavit pomocí ESC
Díky za pomoc
Jirka
Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open
Napsal: 15 říj 2014 14:16
od cmuch
Makro WorkBook_Open si můžeš ručně krokovat.
Otevři sešit, povol makra (pokud máš střední zabezpečení), makro proběhne, vlez do VBA a tam si ho ručně odkrokuj.
Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open
Napsal: 15 říj 2014 15:51
od lubo.
Zkuste parametr /a
z přík. řádku:
start excel soubor /a
Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open
Napsal: 15 říj 2014 17:06
od birgis
No jde o to, že excel otvírám 1000 krát za směnu, takže zabezpečení mám vypnuto. Takže po spuštění se rovnou makro spustí a než ho stihnu přerušit, tak se vykoná a ukončí a zavře se soubor. Takhle probíhá několik pokusů, než se to povede.
Napadlo mě zda je možné např. pomocí cmd příkazu otevřít excel. soubor s makry zakázanými (např: přetáhnutím souboru na zástupce)
Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open
Napsal: 15 říj 2014 18:08
od guest
a) Existovaly pokusy, které s pomocí API funkce ve VBA testovaly parametry příkazového řádku Excelu při spuštění. Nedělal bych to.
b) Nejrozumnější mi přijde před voláním z tasks nastavit proměnnou v INI souboru nebo položku registru, kterou si procedura testuje a po ukončení úlohy vrátit do původního stavu. To při ručním spuštění dělat nebudete a procedura tedy neproběhne.
Poznámky:
Kromě Workbook_Open (WO) existuje ještě Auto_Open (AO), která nastává pouze při manuálním otevření sešitu. Jsou-li v sešitu obě, programové spuštění sešitu vyvolá jako první WO, poté AO. Vám je tohle info ale k ničemu (nebo nevím, jak obrátit tuhle chaloupku "vchodem k sobě".)
Úloha nejspíš ani není řešitelná volitelným parametrem procedury (s výchozí nastavenou hodnotou).
Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open
Napsal: 15 říj 2014 20:08
od Azuzula
Podobnou věc jsem už řešila a jediné schůdné řešení pro mě bylo vytvoření "oslího můstku" v podobě VB scriptu který otevře sešit excelu a spouští makro.
V sešitu si makro přesuň do normálního modulu, nějak ho pojmenuj (řeba "start") a na něj se pak bude odkazovat následující script.
Do textového souboru si vlož následující kód. Uprav v něm název sešitu, jméno makra a soubor pak ulož do stejné složky jako je spouštěný sešit.
Koncovku souboru si přepiš na vbs a plánovanou úlohu si nastav na tento script.
Nebo pokud sešit chceš otevírat ručně aby se spustilo makro, spustíš tento script.
Když budeš chtít sešit upravit jednoduše ho otevřeš přímo a makro se nespustí.
Kód: Vybrat vše
Option explicit
Dim XLApp, strPath
strPath = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) 'umístění skriptu
Set XLApp = CreateObject("Excel.Application")
XLApp.Visible = true
XLApp.Workbooks.Open strPath & "\sesit.xlsm" 'sešit ke spuštění
XLApp.Run "start" 'název makra ke spuštění
Set XlApp = Nothing
Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open Vyřešeno
Napsal: 15 říj 2014 20:15
od cmuch
Mě se oba způsoby pouští ať otevírám sešit jak chci.
pokud by to tak bylo, že Auto_Open proběhne jen při ručním otevření tak by to šlo obejít takto
Do modulu ThisWorkBook vložit
Kód: Vybrat vše
Private Sub Workbook_Open()
Call WOOpen
End Sub
a do normálního modulu vložit
Kód: Vybrat vše
Public taskopen As Boolean
Sub WOOpen()
taskopen = True
End Sub
Private Sub Auto_Open()
If taskopen = True Then
MsgBox "yes task open"
Else
MsgBox "no task open"
End If
taskopen = False
End Sub
S tím, že místo hlášek by bylo makro.
Ale našel jsem supr jednoduchou věc jak zabránit spuštění maker WorkBook_Open a Auto_Open
http://www.jkp-ads.com/articles/preventopenevent.asp....při kliknutí na soubor držet shift
Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open
Napsal: 15 říj 2014 21:22
od guest
Já vlastně ani nevím proč, ale já drženému Shiftu kdovíproč nevěřím. Pravděpodobně, že mi párkrát makro prošlo.
VBScript je další teoretické řešení, které se mi neosvědčilo v rámci naplánovaných úloh. Leckdy jsme ráno zjistili, že skript prostě otevíraný sešit nezavřel a tak visel Excel na pozadí mezi spuštěnými aplikacemi.
Zkoušel jsem teď Auto_Open v Excelu 2010, a pokud otevíráme sešit přes Workbooks.Open, tak tato neproběhne. Ale chce to vyzkoušet z tasks, jak se to chová.
Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open
Napsal: 16 říj 2014 09:53
od birgis
Díky všem za rady.
Vyzkouším a uvidím u čeho zůstanu.
Přes noc mě napadlo ještě řešení tím (možná to taky někomu pomůže) , že budu kontrolovat umístění souboru. Protože soubory nasazené na task mám umístěny v solo složce a při editaci je vždy kopíruju mimo tuto složku-na plochu (co kdyby něco). Takže nastavit podmínku, pokud soubor není ve složce xy, tak ukončit makro.