VBS script a excel soubor - kontrola na změnu Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uziv00
Pohlaví: Nespecifikováno

VBS script a excel soubor - kontrola na změnu

Příspěvekod Uziv00 » 24 črc 2013 11:31

Zdravím. Na síťovém disku je uložen soubor, do kterého zapisují všichni pracovníci. Na řídícím pracovišti běží skript, který kontroluje změnu tohoto souboru a řídícího upozorní (pokud byl změněn). Protože excel změní datum a čas souboru již při otevření (při neuložení čas a datum vrátí zpět), nemohl jsem dost dobře použít systémovou proměnnou Last.Modified, která se mění taky. Vybruslil jsem z toho tak, že skript kontroloval atribut "a" souboru. Prostě, pokud tento atribut našel, oznámil změnu a atribut smazal. Bohužel po přechodu na excel 2007 jsem zjistil, že excel tento atribut dodá i při neuložení změn. Verze 2003 to nedělala. Řídící si již na upozorňování zvykli a teď pouhé prohlédnutí souboru libovolným pracovníkem vede k falešnému oznámení, že byl změněn.
Potřeboval bych nějaký nápad, jak zjistit u excelovského souboru pomocí vbs skriptu, že byl opravdu změněn. Nějaký návrh?
Díky moc za reakce.
Pro úplnost dodávám, že soubor obsahuje šest záložek a je třeba reagovat na změnu libovolné z nich. Testování na velikost by také k ničemu nevedlo, neboť například změna čísla v buňce nezpůsobí změnu velikosti souboru.

Reklama
Uživatelský avatar
franticek
Level 3
Level 3
Příspěvky: 435
Registrován: únor 07
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod franticek » 24 črc 2013 12:49

Zdravím.

Co zkusit md5 nebo nějaký jiný hash souboru?
Ještě jsem našel attribut Date Last Saved, který se mění až po akci Save().
A zkoušeli jste to vypnout a zapnout?

Uziv00
Pohlaví: Nespecifikováno

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod Uziv00 » 24 črc 2013 13:02

To mě taky napadlo, ale ani hash, ani crc nejde rozumně udělat ve vbs. Je třeba programů třetích stran.
Date Last Saved by mi stačila. Jenže potřebuje zase stáhnout od mrkvosoftu DSOfile.dll. Tam je problém s během na 64 bit.

Uziv00
Pohlaví: Nespecifikováno

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod Uziv00 » 24 črc 2013 20:00

up

Uživatelský avatar
franticek
Level 3
Level 3
Příspěvky: 435
Registrován: únor 07
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod franticek » 25 črc 2013 08:46

Ahoj.

DSOfile.dll problém na 64-bit systému je vyřešen tady.

Jinak něco jako MD hash script je tady a vypadá, že není třeba nic 3-tích stran (pouze to asi není pravý MD5 :-) )
A zkoušeli jste to vypnout a zapnout?

Uziv00
Pohlaví: Nespecifikováno

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod Uziv00 » 25 črc 2013 09:22

Díky za snahu, ale vyřešen není. Skript musí běžet pod wscript.exe. navíc, i když ho spustím pod cscript, tak skončí chybou activex. Přitom registrace knihovny proběhla v pořádku. (Ostatně komentář o přechodu na OpenOfficeSDK mluví za vše).
Hash sice vypadá dobře, ale jen výpočet má milion řádků, což je daleko více, než měl původní skript. Nějaké jednodušší řešení by nebylo?
Zatím to zkouším přes počet obsazených řádků v sešitech, ale taky to není 100%, navíc se při každé kontrole musí spouštět objExcel.Application, což zbytečně bere procesorový výkon.
Ještě mě napadlo vzít dateLastModified a přitom zkontrolovat, zda je soubor otevřen. Ale na kontrolu otevření by bylo třeba zase něco jednoduchého.
Jinak demo ve vb7 dodané s DSOfile.dll funguje.

Uživatelský avatar
franticek
Level 3
Level 3
Příspěvky: 435
Registrován: únor 07
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod franticek » 25 črc 2013 13:50

Ahoj.

Napadlo mne udělat malou apku v C#, která buď udělá ten checksum nebo se zkusit dobrat k data last saved a zkompilovat to pro 64-bit systém.
A zkoušeli jste to vypnout a zapnout?

Uziv00
Pohlaví: Nespecifikováno

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod Uziv00 » 25 črc 2013 14:37

Tak nakonec jsem to vyřešil takto - používám DateLast Modified. V případě, že skript zjistí změnu, pak pomocí volání OpenTextFile zkusí soubor otevřít pro zápis. Chybu, kterou by to vyvolalo v případě, že je soubor používán, zachycuji za běhu. V případě chyby je jasné, že soubor někdo prohlíží, nebo edituje a tudíž skript nereaguje. Pokud chyba nenastane, pak jde o regulérní změnu souboru a skript ji oznámí. Lokálně to funguje, uvidím, jak se to bude chovat se sítí.
Tímto bych poděkoval mrkvosoftu za skvělé usnadnění práce :evil: .
Appek bych mohl napsat milion, ale -
1. musím využívat součástí windows (bez programů třetích stran)
2. kód musí být čitelný (což u exe není)
Díky za snahu.

Uživatelský avatar
franticek
Level 3
Level 3
Příspěvky: 435
Registrován: únor 07
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod franticek » 25 črc 2013 16:46

Ahoj.

Taky řešení, jinak co použít powershell? Hledaný atribut má číslo 145.

Kód: Vybrat vše

$path = 'C:\vypis1.xls'
$shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$shellfolder = $shell.Namespace($folder)
$shellfile = $shellfolder.ParseName($file)
0..287 | Where-Object { $shellfolder.GetDetailsOf($shellfile, $_) } |
Foreach-Object {
'{0} = {1} = {2}' -f $_,
$shellfolder.GetDetailsOf($null, $_),
$shellfolder.GetDetailsOf($shellfile, $_)
}
A zkoušeli jste to vypnout a zapnout?

Uziv00
Pohlaví: Nespecifikováno

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod Uziv00 » 25 črc 2013 17:39

No, s powershellem se teprve začínám prát :D Samozřejmě mě napadl taky, jenže není standardní součástí winXP. Problém je totiž i ten, že přehráním jednoho souboru a následným restartem, můžeme vyrobit řídící pracoviště z libovolného jiného. Takže byť tento skript běží na W7, tak v případě nouze je nutné, aby běžel i na XP. kromě toho samozřejmě nehlídá jen jeden tento soubor, ale spoustu dalších věcí, na které upozorňuje, případně řeší (např. na serveru nahazuje spadlé služby). Už proto by volání dalších aplikací a cokoli jiného, co není standardní součástí woken, bylo problematické. každopádně díky.

Uživatelský avatar
franticek
Level 3
Level 3
Příspěvky: 435
Registrován: únor 07
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBS script a excel soubor - kontrola na změnu

Příspěvekod franticek » 26 črc 2013 11:52

Dobrá, dobrá, už mlčím :-).
A zkoušeli jste to vypnout a zapnout?

Uziv00
Pohlaví: Nespecifikováno

Re: VBS script a excel soubor - kontrola na změnu  Vyřešeno

Příspěvekod Uziv00 » 26 črc 2013 14:30

OK. zamykám.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • EXCEL -jak otevřít 2 excel sobory abych je viděla současne a samostatně
    od Ketty02 » 30 srp 2024 21:19 » v Vše ostatní (sw)
    2
    4715
    od Riviera kid Zobrazit poslední příspěvek
    02 zář 2024 16:21
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12143
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Neznámý soubor
    od robin432 » 29 bře 2025 14:45 » v Programy ke stažení
    1
    4599
    od atari Zobrazit poslední příspěvek
    29 bře 2025 14:58
  • .pptx soubor ve formátu A4 Příloha(y)
    od uzivatelzacatecnik » 11 říj 2024 10:39 » v Kancelářské balíky
    3
    2749
    od uzivatelzacatecnik Zobrazit poslední příspěvek
    11 říj 2024 12:01
  • Samsung galaxy A40 - nejde me v Odinu vlozit zadnej soubor. *
    od ransik » 17 čer 2024 19:21 » v Mobily, tablety a jiná přenosná zařízení
    1
    3095
    od mmmartin Zobrazit poslední příspěvek
    18 čer 2024 01:01

Zpět na “Programování a tvorba webu”

Kdo je online

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