Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
A loggoláshoz kell kötni a munkafüzet és a munkalap védelmének feloldását. Pl: az
autoopen-ben kell Visible-re állítani a munkalapot, majd a munkafüzet felépítését védeni, autoclose-ben pedig VeryHidden-re állítani és a védelmet beállítani.
Mondjuk nálam az a szerencse, hogy nincsenek ilyen kis trükkös felhasználók, akiknek fő céljuk, hogy megkerüljék az általam megírt kis algoritmust :-) Én egyszerűen csak azt szeretném tudni, hogy kik matatnak épp a táblázatban, illetve ki-mit csinált vele megelőzően.
HIBA:
'Ide jön majd a hibakezelés, ha lesz türelmem
End Function
____________________________________
Az egyetlen probléma, ha a valakinek be van kapcsolva a Macro virus protection, akkor megnyitáskor rákérdez, hogy használni akarom-e a makrókat. Ha azt mondom, hogy nem, akkor nem loggol semmit. Ezért úgy csináltam meg, hogy eleve elhájdoltam a síteket pászvörddel, és megnyitáskor egy makro hívja elő őket. Namármost, ha kikapcsolja az elején a makrókat, akkor eleve rejtve maradnak az oldalak és nem tudja használni a file-t.
Mondjuk nem mondom, hogy tetszik a megoldás, de legalább működik.
Ha valakinek van más ötlete arra, hogy hogyan lehet megakadályozni, hogy ki lehessen kapcsolni a makrókat, ne titkolja előlem ! :)
Ahol a munkafüzet van, abban a könyvtárban fog létrehozni egy logfile-t, és loggolja a User-name-t, a computer-name-t és a megnyitás és bezárás idejét.
Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA"
_
(ByVal lpBuffer As String, nSize As Long) As Long
Public Declare Function GetComputerName Lib "kernel32" Alias
"GetComputerNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
Sub Auto_Open()
Dim FNum As Integer
Dim UL As Long
Dim UName As String
Dim CL As Long
Dim CName As String
FNum = FreeFile
Open ThisWorkbook.Path & "\log.txt" For Append As #FNum
UName = String$(255, 0)
UL = 255
CName = String$(255, 0)
CL = 255
GetUserName UName, UL
GetComputerName CName, CL
Print #FNum, ThisWorkbook.FullName & " OPENED at " & _
Format(Now, "dd-mmm-yyyy hh:mm:ss") & " by user: " & _
Left(UName, UL) & " from computer: " & Left(CName, CL)
Close #FNum
End Sub
Sub Auto_Close()
Dim FNum As Integer
Dim UL As Long
Dim UName As String
Dim CL As Long
Dim CName As String
FNum = FreeFile
Open ThisWorkbook.Path & "\log.txt" For Append As #FNum
UName = String$(255, 0)
UL = 255
CName = String$(255, 0)
CL = 255
GetUserName UName, UL
GetComputerName CName, CL
Print #FNum, ThisWorkbook.FullName & " CLOSED at " & _
Format(Now, "dd-mmm-yyyy hh:mm:ss") & " by user: " & _
Left(UName, UL) & " from computer: " & Left(CName, CL)
Close #FNum
End Sub
Ez a megoldás nem tölem származik, egy excel newsgroupból vettem. A szerzöje Chip Pearson. http://www.cpearson.com/
Ha elküldenél egy használható példát a (221)-ben leírt megoldásra a >>vbeci@freemail.hu<<-ra megköszönném!
Nekem is az a gond, hogy olyanok kotornak a file-ben, akiknek semmi keresni valója ott, csak bámészok, azután elfeledik bezárni...
Legalább azt tudnám, ki-mikor nyitotta meg, már nagy haszon lenne!
Előre is köszi!
köszi ! már ki is próbáltam ! ez az ENVIRON függvény tökéletesen megfelel a célnak ! az USERNAME paraméter nagyon jó, de találtam még egy NWUSERNAME nevű környezeti változót is ami nem más, mint a NetWare username.
Environ függvény USERNAME paraméterrel működik, legalábbis NT alatt, mivel az NT beállítja a USERNAME környezeti változót. Novell login nem tudom tesz-e ilyesmit.
Nem értem: az excel file megnyitási idejét akarod naplózni, vagy a user belépésének az idejét. Az első egyszerű, a másodikra nem tudok (rendszer dll hívást nélkülöző) megoldást.
VBA-ban le lehet kérdezni valahogy az NT-be, vagy novell-be bejelentkezett felhasználó user-nevét ?
Egy kis VBA makróval szeretném loggolni, hogy egy hálózaton lévő excel file-t ki és mikor nyitott meg. Tehát minden egyes filemegnyitáskor egy másik excel fájlba keletkezik egy új rekord, mely a felhasználó nevét és a belépés idejét tartalmazza.
(Novell rendszer-adminisztrátori eszközök elvetve, csak VBA jöhet szóba)
A makrofejet, amit a szerkesztő készít (gondolom, a szerkesztő ebből a szempontból felhasználót jelent), valamelyik cellába kell elhelyezni, majd azt programként használni. Ezzel egyidejűleg a projektet jelszóval levédeni, így nem kiolvasható a jelszó. Sajnos ez nem nyújt elegendő védelmet, mert egy fájlkezelővel simán rá lehet keresni a fájlban található "unprotect" szóra, és akkor máris megvan a jelszó.
Ez ellen a (nem a legtiszteségesebb, de működő) megoldás az, hogy egy levédett munkalapon 2-3 cellában kell tárolni a jelszó részeit, majd az a VBA-ban változóként deklarálni pl így
Segítség!
Van egy excel munkafüzetem beépített makróval, amely levédi, és nyomógombbal sajátgépre, és hálózatra menti, de a makrót nem tudom letiltani, és így időnként fölnyitogatják a füzetvédelmet!
Ha letiltom a mentésnél kiakad, mert valami a !makrófej elé minden mentésnél 1-1 üres sort szúr be, de nem indokolja semmilyen utasítás!
A 95-ös formátumban ez nem volt meg, csak a 97-esben van!
Ezzel csak az a baj, hogyha biztosra akarsz menni, hogy a felhasználó ne tudjon az adott scroll-tartományon túlmenni (pl. érzekeny vagy titkos adatok vannak azokban a cellákban), akkor le kell tiltani a VBA ablak megnyitását is. De a scroll-areát ki lehet kapcsolni a Nézet>Eszköztárak>Kontrol eszköztáraknál is.
Segítsetek nekem légyszíves, egy excel sheet scrollozhatóságát kellene korlátoznom, tehát, hogy egy bizonyos határon túl ne lehessen továbbgörgetni, illetve a határon túl levő cellákat ne lehessen kijelölni sem. Tudom, hogy VBA-ban a Workbook Open-hez kell beírni, régen tudtam is az utasítást, de akárhogy töröm a fejem, nem jut eszembe és a helpben sem találom.
LG>>> nem igaz, hogy még nem tudtad kiszedni a jelszót!!! :-)))))))
Ezen a címen >> http://www.fileguru.com/security/security.asp találsz vagy 5 olyan programot ami képes kiszedni a jelszót. Bár a többség, vagy az összes shareware, de ha nem akarsz fizetni, akkor a http://www.astalavista.box.sk/ címen keress rá törést!!
köszi, ez tök rendes dolog tőled, csak hát.... khmmmm... szigorúan bizalmas anyag, így nem küldhetem el :(
Ezt a szívást...
Azért a felajánlást mégegyszer köszönöm.
Mindjárt gondoltam. :) Ha viszont elküldöd nekem a fájlt, akkor visszaküldöm jelszavak nélkül. :) (Sajnos a freemailes címemhez nem tudok hozzáférni, úgyhogy javaslom a deli_ben@hotmail.com címet.)