< návrat zpět

MS Excel


Téma: Otevření jiného sešitu před uzavřením rss

Zaslal/a 8.3.2018 8:58

stochlinyAhoj všem. Mám jeden dotaz.
Při uzavírání excelového sešitu (2007) vyvstal požadavek na ukládání několika údajů do jiného sešitu, ze kterého tyto údaje většinou v jiném čase (nelze však vyloučit i současné použití, proto řešení přes pomocný sešit) čerpá jiný sešit (a mnohdy i uživatel). Vím, je to spíš na databázi, ale s tou ne každý pracuje...
Nicméně k jádru pudla. Napsal jsem si makro, kdy před uzavíráním (WB_BeforeClose) se "pomocný" sešit otevře, překopírují se příslušná data, uzavře se sešit a nahranými daty a následně se uzavře sešit původní. Pokud uzavírám sešit "křížkem", tak vše proběhne korektně. Potud je vše OK.
Měl jsem, ale napsánu rutinu v původním sešitu, kdy se uzavíral sešit tlačítkem. A zde nastává nějaká anomálie (alespoň pro mě). Do příslušné procedury se před uzavírám sešitu přesunu, ale v ní je příkaz k otevření jiného sešitu ignorován - k otevření nedojde... Následně pak při pokusu o zápis dat, skončí logicky makro chybou (9).
Neví někdo jak z toho ven?
Dík za jakýkoliv typ...

Přihládám výpis makra:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'uložit změny v tabulce SeznamObj.xlsx
Dim Cislo As Long
Cesta = ThisWorkbook.Path & "\" & adrCis
Nazev = Cesta & "\" & sesitSeznObj
Stop
Workbooks.Open Filename:=Nazev 'otevřít soubor "SeznamObj"
DoEvents
Workbooks(sesitObj).Activate 'vybrat soubor "Objednavky"
Worksheets("2018").Select
Cislo = Worksheets("2018").Cells(Rows.Count, 1).End(xlUp).Row
Text = "A2:X" & Cislo
Stop
Workbooks(sesitSeznObj).Activate
Call OdemkniList("SeznamObj")
Workbooks(sesitObj).Worksheets("2018").Range(Text).Copy 'vybrat
Workbooks(sesitSeznObj).Worksheets("SeznamObj").Range("A2").PasteSpecial xlPasteValues 'kopie z objednávek
Call ZamkniList("SeznamObj")
Workbooks(sesitSeznObj).Close SaveChanges:=True 'zavřít soubor s uložením změn
End Sub

Zaslat odpověď >

#039786
avatar
Chování zcela běžné. Zvláště po příkazu "Close" VBA neočekává plnění některých dalších příkazů.
Řeším tak, že rutinu, která má předcházet zavření, dám do samostatné procedury a z "BeforeClose" ji pak volám.citovat
#039787
stochliny

anyman napsal/a:

Chování zcela běžné. Zvláště po příkazu "Close" VBA neočekává plnění některých dalších příkazů.
Řeším tak, že rutinu, která má předcházet zavření, dám do samostatné procedury a z "BeforeClose" ji pak volám.


Dík, jdu to zkusit.citovat
#039788
stochliny
Tak to nepomohlo. Přesunul jsem do celou rutinu do Modulu. Zavolání rutiny OK, ale stejný výsledek. Řádek s "Open" je ignorován... Ani CSV soubor neotevře (zkoušeno), prostě nic.

Nenapadá někoho jednodušší řešení než mě?
Mě jen nechat otevřený pomocný soubor po celou dobu práce a na konec pouze aktualizovat data a uzavřít. Nezkoušeno, ale teoreticky by to jít mohlo.citovat
#039789
avatar
Od začátku. Doufám, že tam nemáte ty Stopky v ostré verzi kódu...citovat
#039790
stochliny
Re: [xlnc]

Jasně, že ne, ty jsem tam dodělal, když to začalo chybovat, abych věděl, jestli to něco učiní či nikoli a co a jak se mění. Při zavření se ztratí BreakPointy, tak proto STOPky.
"DoEvets" taky bylo doplněno, když už jsem nevěděl "kudy kam", jestli to někde nespí... nepomohlo, jak jsem předpokládal.
Nepomohlo ani pokus přesunutí volání do Before_Save. Stále stejné.

V "tlačítku pro ukončení" je závěrečný kód:

...
Text = Text & "Přejete si založit další?"
i = MsgBox(Text, vbQuestion + vbYesNo, "Další objednávka")
If i = vbNo Then
ActiveWorkbook.Save 'Uloží
Text = "Přejete si uzavřít Objednávky?"
j = MsgBox(Text, vbQuestion + vbYesNo, "Konec")
If j = vbYes Then ThisWorkbook.Close 'Zavře "Objednávky"

Exit Subcitovat
#039792
elninoslov
Cez druhú inštanciu Excelu to pôjde isto, len to pár sekúnd trvá. Nedešifroval som, čo v tom makre robíte (neznáme premenné), tak som si podobné vymyslel.
Příloha: zip39792_open-v-beforeclose.zip (21kB, staženo 29x)
citovat
#039808
stochliny

elninoslov napsal/a:

Cez druhú inštanciu Excelu to pôjde isto, len to pár sekúnd trvá. Nedešifroval som, čo v tom makre robíte (neznáme premenné), tak som si podobné vymyslel.Příloha: 39792_open-v-beforeclose.zip (21kB, staženo 3x)


Super, toto je přesně ono. Mírně upraveno do mých podmínek, ale to je díky mnou nezaslání celého kódu pochopitelné...
Smekám před "elninoslov".
Díky moc, ušetřeno přepracování, dle mých původních úvah...citovat

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse