EXCEL- Otevření souboru bez spuštění makra Workbook_open Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

birgis
nováček
Příspěvky: 36
Registrován: březen 11
Pohlaví: Muž
Stav:
Offline

EXCEL- Otevření souboru bez spuštění makra Workbook_open

Příspěvekod birgis » 15 říj 2014 12:53

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

Reklama
cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open

Příspěvekod cmuch » 15 říj 2014 14:16

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.

lubo.
Level 2
Level 2
Příspěvky: 192
Registrován: červen 13
Pohlaví: Nespecifikováno
Stav:
Offline

Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open

Příspěvekod lubo. » 15 říj 2014 15:51

Zkuste parametr /a

z přík. řádku:

start excel soubor /a

birgis
nováček
Příspěvky: 36
Registrován: březen 11
Pohlaví: Muž
Stav:
Offline

Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open

Příspěvekod birgis » 15 říj 2014 17:06

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)

guest
Pohlaví: Nespecifikováno

Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open

Příspěvekod guest » 15 říj 2014 18:08

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).

Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open

Příspěvekod Azuzula » 15 říj 2014 20:08

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
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open  Vyřešeno

Příspěvekod cmuch » 15 říj 2014 20:15

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

guest
Pohlaví: Nespecifikováno

Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open

Příspěvekod guest » 15 říj 2014 21:22

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á.

birgis
nováček
Příspěvky: 36
Registrován: březen 11
Pohlaví: Muž
Stav:
Offline

Re: EXCEL- Otevření souboru bez spuštění makra Workbook_open

Příspěvekod birgis » 16 říj 2014 09:53

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.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů