Aktywne Wpisy
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
Darthal +75
Nie daje rady tak żyć. Nie mam rodziny, przyjaciół, dziewczyny, dobrego wykształcenia, samochodu. Jestem sam, zwykłym zerem. Małe miasteczko w którym żyje tętni życiem. Wskoczyłem na rower i jeździłem na nim przez kilka godzin obserwując jak ludzie normalnie żyją. Jak chodzą na spacery, jak w sklepie biorą piwa i przekąski na wieczór bo piątek, jakieś dziewczyny rozmawiały o tym że idą wieczorem do kina i będzie super. Obok matka z dwoma kilku
Potrzebna pomoc z excelem i vba. Mam plik na dysku sieciowym i potrzebuję stworzyć log wszystkich osób, które do danego pliku weszły (nawet bez nanoszenia jakichkolwiek zmian).
Udało mi się znaleźć makro:
Private Sub WorkbookOpen()
Dim nrPlikuWyj
On Error Resume Next
nrPlikuWyj = FreeFile
Open "C:\Logi.txt" For Append Shared As #nrplikuwyj
Write #nrplikuwyj,
"Plik " & ThisWorkbook.Name &
" został otworzony " & Now
; " przez " & Application.UserName
Close #nrplikuwyj
End Sub
które zapisuje rejestr wejść do pliku Logi.txt na dysku C. Wszystko fajnie, ale pojawiają się dwa problemy:
1) zapisuje wejście TYLKO autora pliku
2) każda inna osoba niż autor pliku, otwiera go z automatu jako "tylko do odczytu"
podejrzewam, że te dwie rzeczy są ze sobą powiązane i tryb "read-only" powoduje to, że makro nie uruchamia się automatycznie...
Ktoś ma jakiś pomysł, jak to naprawić? Od razu zaznaczam, że jestem totalnym laikiem w kwestii makr (╥﹏╥)
--Ten wklej w obiekt skoroszytu (ThisWorkbook w Microsoft Windows Objects):
Option Explicit
Private Sub WorkbookOpen()
Dim uName As String
uName = Environ("username")
Call FillLog(uName)
End Sub
--a ten w nowy modul (prawym Insert Module)
Option Explicit
Sub FillLog(uName)
Dim nrPlikuWyj
On Error Resume Next
nrPlikuWyj = FreeFile
Open "C:\Logi.txt" For Append Shared As #nrplikuwyj
Write #nrplikuwyj,
"Plik " & ThisWorkbook.Name &
" zostal otworzony " &
I nie wiem co robię źle, ale nie działa mi twoje makro...
Albo wymusisz na użytkowniku włączenie makr albo zrobisz drugiego excela, który będzie na bieżąco monitorował stan pierwszego excela i zapisywał kto go otworzył...
wpisz to pod komenda WorkbookOpen()
SetAttr " [sciezka i nazwa pliku np. "C:\Users\Desktop\Book1.xlsm"] ", vbNormal
przy otwarciu pliku zmieni atrybut ReadOnly
czyli powinno wygladac tak:
Option Explicit
Private Sub WorkbookOpen()
SetAttr "[sciezka]", vbNormal
Dim uName As String
uName = Environ("username")
Call FillLog(uName)
End Sub
@dr_Cyban: ten fragment powoduje, że dopisywana jest kolejna linijka?
czyli będzie
Adam
Beata
Celina?
i jak otworzy Zenon, to też się dopisze na koniec, a nie nadpisze pierwszy wiersz?
W naszym przypadku wybralismy Append, co powoduje dopisanie tresci na koncu pliku.
Wiecej na ten temat: http://www.profsr.com/vb/vbless08.htm