EXCEL 2010 - Microsoft Excel přestal pracovat
Moderátor: Moderátoři
EXCEL 2010 - Microsoft Excel přestal pracovat
Již řadu let používáme poměrně složitou transformaci založenou na Visual Basic, která z textového souboru chybových dat, stažených z řídícího systému zařízení, vytvoří přehlednou tabulku v EXCEL, kde se dají data dále snadno analyzovat.
Transformace byla vytvořena v EXCEL 2003. Později byla upravena tak, aby běžela ve stejné aplikaci v EXCEL 2003 i EXCEL 2007. Prakticky je využívána jen pod Windows XP. Nyní upravuji aplikaci tak, aby pracovala také v EXCEL 2010 v prostředí W8.
Po proběhnutí celého procesu transformace v soustavě Maker ve Visual Basic je v závěru jednoduchá instrukce pro uložení výstupního souboru
'Poslední uložení souboru
ActiveWorkbook.Save
V EXCEL 2010 pod W8 se v průběhu ukládání často náhle zobrazí hlášení "Microsoft Excel přestal pracovat", pak zpráva o "hledání řešení problému" a nakonec "restartování EXCEL" s nabídkou uložení obnoveného výstupního excelovského souboru v požadovaném názvu i původního transformačního excelovského souboru.
Výstupní soubor přitom již najdu řádně uložen bez koncovky xls pod nějakým jménem např. "B6E22000" nebo třeba "A1D42000". Pokud názvu doplním příponu xls, je to ten požadovaný ukládaný výstupní soubor. Jen je uložen pod nějakým vnitřním kódem Windows a bez koncovky.
Záhadou je, že k tomu přerušení ukládání dojde jen občas, obvykle několikrát po prvním otevření a spuštění transformace, a pak již běží ukládání a celá transformace normálně. Pokud výstupní soubor otevřu a ukládám ručně, vše běží vždy normálně. Tak předpokládám, že je to nějaký problém při ukládání pomoci té instrukce ve VB.
V EXCEL 2003 a 2007 k tomu nikdy dosud nedošlo.
Potřebuji nakopnout, kde by mohla být příčina tohoto jevu. Už si s tím dost dlouho hraji a již mne nic jiného nenapadá než, než požádat o radu, abych nebyl zaslepen, a nebloudil kolem jednoho místa.
Kdybych tohle řešil já,napsal bych si program,který by z toho *.txt souboru vytvořil *.xls,případně pokud to není třeba později editovat,ukládal bych to do *.pdf případně jiného formátu souboru.
- serviceman
- Příspěvky: 4093
- Registrován: 09 črc 2013, 00:00
Záhadou mi zůstává, proč k tomu přerušení práce Excel 2010 při ukládání dojde jen občas a jen při závěrečném uložení těsně před ukončením transformace. Zhruba bych řekl, že z 10 spuštění transformace to závěrečné uložení 6x to projde bezchybně a 4x se Excel u toho zastaví. Zatím se mi nepodařilo najít nějakou souvislost mezi normálními průchody nebo naopak průchody se zastavením Excel. Zdá se, že to po prvním spuštění transformace končí několikrát chybně, a pak se to nějak chytí, ale není to pravidlo. Takový projev Excelu se objevuje jen u této aplikace. Při běžném a častém používání Excelu a ručním ukládání se mi to nikdy nestane. Takže mne nenapadá žádná souvislost s instalací Excel a jeho případnou přeinstalaci nebo jeho nastavením.
Ta transformace není jednoduchý převod txt souboru do xls. Podle vnitřních algoritmů, naprogramovaných ve Visual basic, se přiřazují zkratkám poruchových kódů plné texty, vypočítává se statistika četnosti výskytu poruch a stavů a statistiky se převádějí navíc do přehledných grafů. Zakódované údaje různých fyzikálních hodnot v TXT souboru se přes vzorce převádějí do reálných jednotek, atd. atd.
Výsledek nemůže být v PDF, protože výstupní EXCEL soubor má přednastaven automatický filtr s možnosti třídění a výběru dat podle jednotlivých datových sloupců. To je potřebný silný nástroj pro analýzu dat, kvůli kterému byla transformace vytvořena.
Program Excel a uspořádaný soubor Maker ve Visual Basic byl pro transformaci zvolen z toho důvodu, že pro většinu servisních techniků jako potencionálních uživatelů této transformace je Excel legálně k dispozici v jejich firemních počítačích nebo NTB.
V době vzniku transformace měla většina počítačů jen Excel 2003 a XP. Nyní je škála SW různorodá od Excel 2003 a XP ač po Excel 2010 nebo 2013 a W8. Proto je snaha vytvořit a mít transformaci, která v jediné verzi funguje na všech dostupných platformách Ecxel a Windows.
Zdá se, že se rozdíly mezi "ročníky" Excel daří úspěšně řešit. Jen zatím marně bojuji s tím, proč se nedaří v Excel 2010 spolehlivé vyřešit to uložení výsledného souboru jako xls souboru, tj. ve formátu 2003/2007.
Nejde ta jednoduchá instrukce pro uložení souboru napsat nějak jinak, aby si s ní EXCEL 2010 spolehlivě poradil a nedělal psí kusy ve formě hlášky "Excel přestal pracovat"?
SDZ píše:...V tom případě je jedná o zcela jednoduchý progámek.Je potřeba pouze vědět jak má fungovat , trocha znalosti programováni a čas.....
Myslím, že zcela jednoduchý prográmek by to nebyl. S ostatním souhlasím, že to chce znát požadované funkce, umět programovat a mít na to čas. Výstupní soubor xls po transformaci má 7 listů, z toho jeden s uspořádanými vstupními daty, jeden list se statistikou, 3 listy grafů ze statistiky a dva listy s technickými informacemi pro technika. Takže ukládaný xls soubor je dost obsáhlý a má podle množství dat kolem 950kB délku. Navíc se vygenerují automaticky Makra a jejich ovládací tlačítka pro usnadnění práce s výstupním souborem. Příklady vstupních dat a výstupních listů jsou jako obrázky GIF v příloze. Možná mohou být tyto příklady inspirací pro nalezení důvodu nespolehlivého ukládání souboru.
Jinak, jak jsem napsal, nejde o vlastní funkce a algoritmy, ale jen o jedinou sekvenci ve VB spočívající uložení výstupního souboru, která děla problémy.
- Přílohy
-
Graf četnosti poruch_vzor.gif- (189.42 KiB) Staženo 169 x
-
Statistika_vzor.gif- (52.23 KiB) Staženo 147 x
-
Výstupní TXT soubor-vzor.gif- (94.42 KiB) Staženo 162 x
-
Vstupní TXT soubor_vzor.gif- (23.29 KiB) Staženo 150 x
Zkusil bych do kódu něco jako Application.processmessages.
Vzhledem k tomu že to pod XP funguje,prošel bych celý zdrojový kód programu a zkontroloval kompatibilitu s W8.
Jinak k funkčnosti programu -na první pohled je čten zdrojový soubor po řádcích.Každý řádek se parsuje.Texty chyb jsou jako konstanty.Nepřipadá mi to nijak složitý,ale práci by to určitě dalo.Pro export do XLS jsou u vyšších programovacích jazyků knihovny ,které značně zjednodušší převod dat do XLS.
Ještě mě napadlo jestli by nefungovala pod W8 movější verze EXCELu,ale záleží na kompatibilitě maker.
'pausa 6 sec na uložení souboru aby se nezastavil Excel 2010 pod W8
Dim PauseTime2, Start2, Finish2, TotalTime2
PauseTime2 = 6 ' Čas pauzy.
Start2 = Timer ' Spuštění časovače.
Do While Timer < Start2 + PauseTime2
DoEvents ' Yield to other processes.
Loop
Finish2 = Timer ' Zastavení časovače.
TotalTime2 = Finish2 - Start2 ' Calculate total time.
'Poslední uložení souboru
ActiveWorkbook.Save
Dvakrát proběhla transformace úspěšně i s uložením, už jsem se chtěl radovat. Potřetí opět hláška "Excel přestal pracovat"
http://support.microsoft.com/kb/832121/cs
by problém mohla způsobovat systémová chyba Microsoftu.
Nemám však odvahu a dost zkušenosti to nějak opravovat. Navíc postup je pro office 2007.
Takhle se s tím dá fungovat shodnou aplikaci pod Excel 2003, 2007 i 2010. Nikdo není dokonalý, ani Microsoft.
Pokud později někoho napadne lepší řešení problému, rád je přijmu.
-
petrfilipi
- Příspěvky: 2902
- Registrován: 13 zář 2005, 00:00
Takže moje rada - zapněte si před finálním ručním uložením souboru záznam makra, soubor uložte, vypněte záznam, mrkněte do makra a to co tam vidíte zkuste zkopírovat do původního makra.
To by v tom byl čert, aby to nechodilo. Jinak bych ještě zkusil ukládat buď jako *.xls, nebo *.xlsx.
Petr Filipi
-
petrfilipi
- Příspěvky: 2902
- Registrován: 13 zář 2005, 00:00
Co kdybyste vygeneroval podobné množství dat nějakou náhodnou funkcí a zkusil je uložit?
Ukládáte to v 2003, 2007 i ve 2010 pořád ve stejném formátu (*.xls), nebo to třeba v 2010 ukládáte jako *.xlsx?
Když to ukládá, podívejte se na využítí paměti ve správci úloh. Jednou jsem se dostal s mým makrem na neuvěřitelný 1GB zabrané RAM. Běží i po pádu Excelu proces Excel.exe?
Já mám taky v NB Office 2010 a nikdy se mi nepodařilo ho dlouhodobě při ukládání odstavit. Stane se mi třeba při zpracovávání 80.000 řádků, že mi to přestane do buňky A6 vypisovat číslo záznamu, který se právě zpracovává (taky náhodně, někdy to skončí u 10.513, jindy u 18.423 - ale to mi neva, mám to tam jako jakousi kontrolu běhu programu a dokonce tam mám i příkaz na update obsahu buňky), ale po čase se makro dokončí, obsah buňky A6 se zaktualizuje a je hotovo.
Petr Filipi
Také jsem uvedl, že po hlášce "EXCEL přestal pracovat" se Excel restartuje a nabídne uložení výstupního souboru pod názvem, které vygeneruje jedno z maker. Celá transformace probíhá tak, že se spustí základní makro transformačního programu, které načte vstupní TXT soubor na nový list. Pak probíhá sekvence mnoha maker jako podprogramu hlavního makra, která provede celou transformaci, takže vstupní EXCEL se stane sám výstupem transformace.
Po zastavení EXCEL je však již výstupní soubor uložen pod nějakým vnitřním názvem Microsoftu.
Je mi naprosto nepochopitelné, že stejný transformační EXCEL a stejná vstupní data někdy projdou bez zastavení při ukládaní, a vzápětí se tento úkaz projeví.
Transformace v EXCEL 2003 a 2007 probíhá bez problémů na desítkách PC u techniků, kteří transformaci používají. Pod EXCEL 2010 na W8 to zkouším zatím jen u sebe na svém PC. V řadě funkcí, jako např. čísla generovaných tlačítek maker, se liší mezi Excely, a proto je nutno naprogramovat výhybky v chodu programu, aby VB nehlásil chybu. To zastavení však není chyba VB, ale je to něco co zatím neumím vysvětlit.
Na to využití paměti při ukládání se podívám až příští týden. Jsem na chatě a zde mám k dispozici jen EXCEL 2003 a XP. Také mám zde omezený pčístup na internet přes mobil.