Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-soubory » excel-vba-kdo-pristupuje-do-souboru

Kdo přistupuje do souboru - Excel VBA

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak zjistit, kdo otevírá náš Excelovský soubor?

Úvodem

Cílem je vytvořit makro, které do listu (neviditelného) bude zapisovat, kdo přistupuje do tohoto souboru. Takto zněl zajímavý emailový dotaz. VBA kód jsem upravil, aby zapisoval nejen kdo přistupuje (otvírá) soubor, ale také kdy jej otvírá :).

Co tedy bude makro provádět? Pokud někdo otevře náš Excelovský soubor uloží se do skrytého listu jeho jméno (UserName) a čas, kdy tento soubor otevřel.

Využití zneužití :)

Následující kód se dá využít ke zjištění jak oblíbené jsou některé naše Excelovské soubory. Případně monitorovat zda pracovníci opravdu se souborem pracují.

VBA Kód

Předpokladem je list s názvem tajny.

Private Sub Workbook_Open() Dim PrazdnyRadek As Long ' prvni prazdny radek PrazdnyRadek = Worksheets("tajny").Cells.SpecialCells(xlCellTypeLastCell).Row + 1 ' zapiseme kdo Worksheets("tajny").Cells(PrazdnyRadek, 1) = Application.UserName ' zapiseme kdy Worksheets("tajny").Cells(PrazdnyRadek, 2) = Now ' tajny list skryt Worksheets("tajny").Visible = xlSheetHiden ' ulozit ThisWorkbook.Save End Sub

Poznámka: V MS Excelu musí být povolena makra.

Vylepšení

Pokud je nastavena v VBA vlastnost listu tajny na VeryHiden, nepodaří se nám tento list zobrazit klasicky v Excelu, musí se otevřít VBA

Worksheets("tajny").Visible = xlSheetVeryHiden

Formátování data

Můžeme nastavit lepší formátování data, třeba doplnit o sekundy.

Více informací o tom jak na to, je předmětem jiného článku.

Ke stažení

Prezentovaná příklad zdarma ke stažení: Kdo přistupuje do souboru soubor ve formátu *.xlsm - soubor obsahuje makra.

Článek byl aktualizován: 01.11.2014 14:24

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák

Pavel Lasák - autor webu

Microsoft Office (Word, Excel, PowerPoint) se věnuji od roku 2006. Své vědomosti a zkušenosti dávám k dispozici na různých školeních a konzultacích, ale také na tomto webu. K dispozici na tomto webu je mnoho návodu, tipů a triků včetně desítek různých šablon.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil

Doporučte tento článek přátelům

Pokud vám článek pomohl, případně si myslíte, že může pomoci i někomu dalšímu, budu rád když jej sdílením doporučíte přátelům - děkuji:



Komentáře


Štěpán Přibáň

Přidáno: 10.02.14 14:55

Dobrý den, děkuji za tuto užitečnou "funkci". Měl bych dotaz. Je možné ji upravit tak, aby log o přístupech byl zapsán do jiného souboru (ne na list ve stejném souboru), případně nějak obejít nutnost ručně povolit Makra? Děkuji a přeji hezký den, Štěpán Přibáň

Severýn D.

Přidáno: 20.03.14 15:53

Dobrý den, funkce je super. Měl bych dotaz. Je možné ji upravit tak, aby log o přístupech byl zapsán do jiného souboru (ne na list ve stejném souboru), případně nějak obejít nutnost ručně povolit Makra? Děkuji.

Pavel Lasák

Přidáno: 20.03.14 16:59

To Severýn D.: Je možnost, uvede se cesta k souboru do kterého se bude ukládat.

Štěpán Přibáň

Přidáno: 01.04.14 17:54

Byl by prosím možný nějaký příklad, jak zadat cestu pro zapisování do jiného souboru? Pokoušel jsem se ji do Makra vtělit, ale vždy neúspěšně. Je možné nějak obejít nutnost ručně povolit Makra? Děkuji.

Lukáš

Přidáno: 17.04.14 15:00

Dobrá věc, vylepšil jsem pro zápis do txt - tvořím tak log soubor vztažený k jedné aplikaci v MS Excel.

Pavel Lasák

Přidáno: 17.04.14 20:57

To Lukáš: Klidně můžeta poslat ukázku, určitě se bude někomu hodit.

Lukáš

Přidáno: 25.04.14 07:50

To Pavel: Public Sub log() 'zapsání uživatele do souboru log.txt Dim sUserName As String Dim sUSer As String sUserName = Environ$("username") sUSer = Application.UserName Dim cestasoubor As String Dim nazevlog As String Dim lomitko As String Dim textak As String cestasoubor = "C:\Users\" & sUserName & "\Desktop" lomitko = "\" nazevlog = "log.txt" textak = cestasoubor & lomitko & nazevlog Dim soubor As String Dim cas As String Dim zmena As String Dim datum As String soubor = ThisWorkbook.Path zmena = FileDateTime(soubor) datum = Date cas = Time Dim zapis As String zapis = "Naposledy otevřel: " & sUserName & "(" & Replace(sUSer, " ", "") & "), dne " & datum & " v " & cas & ". Naposledy uloženo: " & zmena Dim file file = textak Open file For Append As #1 Print #1, zapis Close #1 End Sub

Tomáš

Přidáno: 22.06.15 10:05

Dobrý den, velice Vám děkuji přesně toto jsem potřeboval. Je možné ještě do skrytého listu zapsat jak dlouho uživatel s jednotlivými listy pracoval a kdy sešit zavřel?







Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Newsletter

Přihlaste se odběru novinek a získejte:
Ebook zdarma -
10 kroků ke zvládnutí (Word, Excel, PowerPoint)
Šipka Kniha 3D Více o ebooku ...

TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2017 | 13243

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.