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.