среда, 21 июня 2017 г.

Локал тармокда файлдан кимдир фойдаланмокда. Ким? (Ёки VBA-архив ёзиш)

Локал тармокда битта Excel файлдан бир нечта одам фойдаланса, ва бирорта одамда очик булса, иккинчи одам кириб узгартириш (кайд килиш) кила олмайди.
Ва купинча кимда очиклигини билиш муаммолар тугдиради. Албатта, администратор бу масалани техник ва дастурий томондан хал килиши мумкин, лекин бусиз хам вазиятдан чикиш мумкин.

Мавзудаги макросни киладиган иши: хар бир кирган одамни исмини *.log файлда ёзиб колдириш.

Энг содда кодни куриниши ушбу шаклдадир:

Private Sub Workbook_Open()

'excel joylashgan papka ichiga arxiv joylashtiriladi
    Open ThisWorkbook.Path & "\usage.log" For Append As #1
    Print #1, Application.UserName, Now
    Close #1
End Sub 

Excel жойлашган папка ёнидаги бирор папка ичига архив тушиб туриши учун эса бундай шаклда ёзамиз:

Private Sub Workbook_Open()
'excel joylashgan papka yonidagi 98-reserve papkasi ichiga arxiv joylashtiriladi
    Open ThisWorkbook.Path & "\98-reserve\IL.log" For Append As #1
    Print #1, Application.UserName, Now
    Close #1
End Sub 

Лекин бу код фойдаланувчи исмини тугри курсатиши учун Excel фойдаланувчида тугри созланган булиши керак, масалан фойдаланувчи исми MS Office урнатилганда "Петров Иван" эмас "user" деб ёзилган булса, файлни кимда очиклигини билиш кийин булади. 
Бу вазиятдан чикиш учун кодни мураккаблаштирдик, компьютер исмини куйдик, яна бундан ташкари файлни аник жойини курсатса булади:

Private Sub Workbook_Open()

    Open "\\server\sample.log" For Append As #1
'kompyuter ismini ham qoshamiz
    Print #1, Application.UserName, Environ("ComputerName"), Now
    
    
    Close #1
End Sub


Янада мураккаблаштирсак: файл номини куйсак: 

Private Sub Workbook_Open()

'fayl ismini yozamiz
    Open "\\server\sample.log" For Append As #1
    Print #1, Application.UserName, Environ("ComputerName"), Now, ThisWorkbook.Path, ThisWorkbook.Name
    Close #1
End Sub

Яъни, бундан кейин файлни кимдир бошка жойга кучириб, (масалан уз "Рабочий стол"ига) очса, у ердан тугри курсатилган адресдаги *.log файлга ким очиб, каердан очиб, ушбу файлни кулланаётгани хакида маълумот тушиб туради.

    Натижада архивда куйидаги матндагидай натижа сатр-сатр булиб туриши керак:
Umrbek Matrasulov 21.06.2017 17:55:32 PC2000 C:\Users\Umrbek.Matrasulov\Desktop



Кайси катакда нима иш килганини ёзиб турсин десангиз... )) (процедура факат маълум листга алокадор була олади)

Private Sub Worksheet_Change(ByVal Target As Range)


'kataklardagi qilingan ishlarni yozib quysin
    Open ThisWorkbook.Path & "\usage.log" For Append As #1
    Print #1, Application.UserName, Now, ThisWorkbook.Path, ThisWorkbook.Name, ActiveCell.Address, ActiveCell.Text
        Close #1

End Sub


Энг, энг сунгги холи:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Open "\\serv1\WL.log" For Append As #1
    Print #1, Environ("UserName"), Application.UserName, Now, Environ("ComputerName"), ThisWorkbook.Path, ThisWorkbook.Name, "close"
    Close #1
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Open "\\serv1\WL.log" For Append As #1
    Print #1, Environ("UserName"), Application.UserName, Now, Environ("ComputerName"), ThisWorkbook.Path, ThisWorkbook.Name, "save"
    Close #1
End Sub

Private Sub Workbook_Open()

'papka yolini korsatamiz
    Open "\\serv1\WL.log" For Append As #1
    Print #1, Environ("UserName"), Application.UserName, Now, Environ("ComputerName"), ThisWorkbook.Path, ThisWorkbook.Name, "open"
    Close #1
End Sub

Эътибор учун рахмат!
Умрбек


Комментариев нет:

Отправить комментарий

кабул килинди

Excelдаги яна иккита функция (формула) VBA оркали: 1.PDF сахифалари сонини аниклаш. 2.Файлларни жойини кучириш (Move, Переместить)

1.PDF Файли сахифалари сонини чикариш. Мана шу функцияни модулга жойлаштирсак формуламиз PDF файл ичидаги сахифалар сонини чикариб бериши...