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: 19.09.2020 11:07

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 - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

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


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?






Excel


Sdílejte

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

Nové články


Reklama


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 - 2024 |