< návrat zpět

MS Excel


Téma: Sledovanie zmien rss

Zaslal/a 21.6.2018 15:20

Čaute,

skript na sledovanie každej zmeny v hárku1 ? Report zmien by sa ukladal do textového súboru na pracovnú plochu.

Report by mal obsahovať : autor, pozíciu bunky, dátum-čas zmeny, stará hodnota, nová hodnota.

Ďakujem, veľmi pekne.

Zaslat odpověď >

icon #040776
eLCHa
Dělat to nebudu. Jen autora a potencionální řešitele upozorním - pokud ukládáte do textového souboru, neměli byste to dělat okamžitě - protože pokud soubor nebude uložen, případně "spadne" => k žádným změnám nedošlo.citovat
#040777
avatar

eLCHa napsal/a:

Dělat to nebudu. Jen autora a potencionální řešitele upozorním - pokud ukládáte do textového souboru, neměli byste to dělat okamžitě - protože pokud soubor nebude uložen, případně "spadne" => k žádným změnám nedošlo.


Ak sa súbor daná osoba neuloží alebo súbor spadne tak ma to vôbec nezaujíma. Ja len potrebujem vedieť v 10 000 riadkoch akú hodnotu zmenili a kedy.citovat
#040778
avatar
Našiel som niečo také ale chýba mi tam stará hodnota + blbne to.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
TrackFile = "C:\Users\Pato\Desktop\test\TRACKER.txt"
TargUser = Application.UserName
TargAddr = Sh.Name & "!" & Target.Address(False, False)
TargVal = Target.Resize(1, 1).Text
TargDate = Format(Now, "dd-mmm-yyyy hh:mm:ss")
x = TargDate & vbTab & TargUser & vbTab & TargAddr & vbTab & TargVal
Open TrackFile For Append As #1
Print #1, x
Close #1
End Subcitovat
#040779
avatar
A co řešení přes sdílený sešit a zabudované sledování změn přímo v Excelu?
P.citovat
#040786
elninoslov
Asi skúste ten zdieľaný zošit. Makrom to totiž vôbec nebude také jednoduché ako sa na prvý pohľad zdá.

-Môže nastať zmena viacerých buniek (aj nesúvislých), nielen 1 bunky. Na to sa vyššie uvedený kód nedá použiť. Teraz je otázne, či to urobiť ako logovanie úrovne Areas (+ spojiť všetky hodnoty do oddeleného reťazca) alebo Cells, čo je pri obľube mazania celých stĺpcov nereálne.

-A čo vymazanie pridanie riadku ? Teda sa musí pri každej zmene kontrolovať aj počet riadkov. Ak sa pridá alebo zmaže celý riadok, nastane zmena, kde Target bude počet stĺpcov Excelu, tak sa dá určiť, či bol pridaný/vymazaný riadok. Samotná identifikácia pridania či zmazania sa potom musí urobiť na základe počtu riadkov. Lenže riadky sa dajú pridať aj vložením a posunutím iba niektorých buniek. Celé sa to komplikuje.

-Najväčšia komplikácia ale je, ako zistiť pôvodnú hodnotu. Buď sa bude uchovávať rovnaký list ako skrytý, alebo sa po každej zmene použije Undo, prečítajú sa hodnoty podľa Target, a použije sa Redo. To je katastrofálne pomalé. A ešte pomalšie je, uchovávanie predošlých hodnôt v druhom liste. Prečo? Lebo musíte najskôr identifikovať čo sa udialo (viď napr. pridanie riadku) a následne urobiť to isté v skrytom liste po prečítaní predošlých hodnôt. A to môže byť pre niektoré veci nezrealizovateľné. Napr. pridanie či aplikovanie filtra nevyvolá akciu zmeny, a pritom môže mať enormný dopad na výsledok.

Atď. Snáď sa mýlim, ale nevidím tu reálnu cestu makrom ak nevieme ani či sa jedná a uzavretú tabuľku bez možnosti pridania/vymazania riadku/stĺpca, vplyvu filtrov, či zmeny iných objektov, ...citovat
icon #040789
eLCHa
@Pato
Ak sa súbor daná osoba neuloží alebo súbor spadne tak ma to vôbec nezaujíma. Ja len potrebujem vedieť v 10 000 riadkoch akú hodnotu zmenili a kedy.

Tady si trochu protiřečíte. Ale na to přijdete, až (pokud) vám to někdo připraví podle vašeho nápadu.

Já jsem tento problém řešil několik let (samozřejmě ne každý den ;) ), než jsem ho nastavil tak, aby fungoval správně.citovat
#040793
avatar

elninoslov napsal/a:

Asi skúste ten zdieľaný zošit. Makrom to totiž vôbec nebude také jednoduché ako sa na prvý pohľad zdá.

-Môže nastať zmena viacerých buniek (aj nesúvislých), nielen 1 bunky. Na to sa vyššie uvedený kód nedá použiť. Teraz je otázne, či to urobiť ako logovanie úrovne Areas (+ spojiť všetky hodnoty do oddeleného reťazca) alebo Cells, čo je pri obľube mazania celých stĺpcov nereálne.

-A čo vymazanie pridanie riadku ? Teda sa musí pri každej zmene kontrolovať aj počet riadkov. Ak sa pridá alebo zmaže celý riadok, nastane zmena, kde Target bude počet stĺpcov Excelu, tak sa dá určiť, či bol pridaný/vymazaný riadok. Samotná identifikácia pridania či zmazania sa potom musí urobiť na základe počtu riadkov. Lenže riadky sa dajú pridať aj vložením a posunutím iba niektorých buniek. Celé sa to komplikuje.

-Najväčšia komplikácia ale je, ako zistiť pôvodnú hodnotu. Buď sa bude uchovávať rovnaký list ako skrytý, alebo sa po každej zmene použije Undo, prečítajú sa hodnoty podľa Target, a použije sa Redo. To je katastrofálne pomalé. A ešte pomalšie je, uchovávanie predošlých hodnôt v druhom liste. Prečo? Lebo musíte najskôr identifikovať čo sa udialo (viď napr. pridanie riadku) a následne urobiť to isté v skrytom liste po prečítaní predošlých hodnôt. A to môže byť pre niektoré veci nezrealizovateľné. Napr. pridanie či aplikovanie filtra nevyvolá akciu zmeny, a pritom môže mať enormný dopad na výsledok.

Atď. Snáď sa mýlim, ale nevidím tu reálnu cestu makrom ak nevieme ani či sa jedná a uzavretú tabuľku bez možnosti pridania/vymazania riadku/stĺpca, vplyvu filtrov, či zmeny iných objektov, ...


Ahoj,

ako uvádzaš na konci, je to uzavretá tabuľka a užívateľ môže maximálne 3 stĺpce modifikovať (žiadne pridávanie, mazanie stlpcov, a pod.). Nejaké to makro už mam nastavené a preto pri jednoduchom Revízia -> sledovanie zmien nefunguje správne alebo pri zapnutí mi prestane fungovať nejaké marko...Preto som myslel, že to poriešim cez dalšie makro....citovat

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje