Đếm số lần file được mở

Liên hệ QC

nghiaquangtran

Thành viên chính thức
Tham gia
28/10/08
Bài viết
79
Được thích
25
Chào các bạn

Mình muốn kiểm tra xem file data của mình có bao nhiêu lần được mở ra thì phải làm ntn, các bạn chỉ mình với, mình muốn nó được đếm số lần được mở kể cả khi mở ra rồi đóng lại mà không save, vì file của mình đã protect nên không ai có thể save được cả.

Cám ơn nhiều
 
Chào các bạn

Mình muốn kiểm tra xem file data của mình có bao nhiêu lần được mở ra thì phải làm ntn, các bạn chỉ mình với, mình muốn nó được đếm số lần được mở kể cả khi mở ra rồi đóng lại mà không save, vì file của mình đã protect nên không ai có thể save được cả.

Cám ơn nhiều

Bạn xem thử đúng ý bạn không nha.
PHP:
Sub workbook_open()
Sheet1.Unprotect
[B1] = [B1] + 1
Sheet1.Protect
ActiveWorkbook.Save
End Sub
 

File đính kèm

Upvote 0
Bạn xem thử đúng ý bạn không nha.
PHP:
Sub workbook_open()
Sheet1.Unprotect
[B1] = [B1] + 1
Sheet1.Protect
ActiveWorkbook.Save
End Sub

cám ơn bạn Hoangdanh

thực ra thì file data của mình rất nhiều người vào đó lấy số liệu, thường thì sau khi làm vc trên file đó xong họ thoát ra mà không sava (và mình cũng không muốn họ save vì sợ trong lúc làm vc trên đó họ làm sai lệch vài thứ > mình phải gỡ bỏ protect vì trên đó có nhiều chart đôi lúc ai đó cần có thể copy ra ngoài dc) nhưng nếu mình bỏ đoạn code ...ActiveWorkbook.Save...này đi thì đoạn code đếm này không hoạt động dc

thân
 
Upvote 0
Nếu không muốn ghi vào file excel thì dùng 1 file text để đếm số lần mở file.
Ngoài ra có 1 cách (mà tôi chưa tìm được lời giải), đó là: sửa properties của file excel bằng các hàm của WinAPI (không cần mở file vẫn sửa được thuộc tính số lần xem file: ReVision).

Ai biết cách này thì xin gửi mã ở đây để học hỏi!

Thân!
 
Upvote 0
cám ơn bạn Hoangdanh

thực ra thì file data của mình rất nhiều người vào đó lấy số liệu, thường thì sau khi làm vc trên file đó xong họ thoát ra mà không sava (và mình cũng không muốn họ save vì sợ trong lúc làm vc trên đó họ làm sai lệch vài thứ > mình phải gỡ bỏ protect vì trên đó có nhiều chart đôi lúc ai đó cần có thể copy ra ngoài dc) nhưng nếu mình bỏ đoạn code ...ActiveWorkbook.Save...này đi thì đoạn code đếm này không hoạt động dc

thân

Đoạn code trên chỉ cập nhật số lần mở và lưu lại số vửa cập nhật ngay khi file vừa được mở. Điều này có nghĩa là nó không làm ảnh hưởng đến dữ liệu của bạn khi thao tác sau này. Nó không lưu lại dữ liệu nếu bạn thao tác trên file.

Tóm lại : ActiveWorkbook.Save when Workbook_open không ảnh hưởng gì đến việc thao tác của bạn.
 
Upvote 0
Mình giới thiệu đoạn code để xem, sửa Properties của File. Các bạn lưu ý trong Code thử có đoạn lệnh tăng giá trị keyword 1 dv khi chạy code. Vậy đặt code này trong sự kiện mở hay đóng File là ghi lại só lần mở hoặc đóng. Nó ghi trong Properties của File không ảnh hưởng đến các sheet dữ liệu của bạn:

p.Value = Val(p.Value + 1)


Bạn còn có thể biết được lần in gần nhất hoặc thay đổi password từng lần mở(Bạn ghi vao comment goi ý thì chỉ bạn mới tính ra pass mở lần sau) Khi đóng bạn cứ việc buộc phải lưu là ổn vì các sheet đã protect thì gõ vào đã "keng" rồi làm sao sửa được.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Danh ơi, nếu mở file mà không Enable Macro thì sao ?

TDN
Vụ này hơi bị căng à nha!
Chưa nghĩ ra cách, tuy nhiên cũng góp vui 1 cách không cần cell phụ:
PHP:
Private Sub Workbook_Open()
     Solan = GetSetting("MyCount", "A", "Count", 0) + 1
     MsgBox "File da duoc mo " & Solan & " lan"
     SaveSetting "MyCount", "A", "Count", Solan
End Sub
Chèn thêm đoạn này vào:
PHP:
If Solan > 3 Then Application.Quit
Nếu muốn file đóng lại khi số lần mở vượt quá số đặt trước
Chèn thêm đoạn này vào:
PHP:
DeleteSetting "MyCount", "A", "Count"
Để Reset bộ đếm
vân vân và vân vân
 
Upvote 0
ndu96081631 Có thể nói kỹ hơn về hàm getsetting() để anh em tham khảo với. Cụ thể hơn về các tham số và các thông số trả về. Cám ơn NDU giới thiệu 1 hàm hay ít người biết đến.
 
Upvote 0
mình có 1 vấn đề sau

file của mình pót trên server nên rất nhiều người vào xem, nếu có người mở trước thì những người mở sau sẽ ở chế độ "Read only", nên nếu trong đoạn code mà có lệnh "Save" là không được.

các bạn có ý kiến j không
 
Upvote 0
ndu96081631 Có thể nói kỹ hơn về hàm getsetting() để anh em tham khảo với. Cụ thể hơn về các tham số và các thông số trả về. Cám ơn NDU giới thiệu 1 hàm hay ít người biết đến.
Anh mở cửa sổ VBE ra, gõ chử Getsetting ---> bôi đen nó rồi F1 là có đầy đủ (có luôn example để tham khảo)
 
Lần chỉnh sửa cuối:
Upvote 0
Em nghĩ có thể dùng thế này : Khi đóng File thì khoá file lại (ví dụ cho các sheet.Visible = Veryhidden), như vậy khi mở file sẽ buộc người dùng phải Enable Macro thì mới có thể thao tác được.

TDN
Cách này dùng thế nào, anh có thể hướng dẫn cụ thể hơn được không? Em tạo lệnh như anh nói thì nó cứ báo lỗi
 
Upvote 0
Anh mở cửa sổ VBE ra, gõ chử Getsetting ---> bôi đen nó rồi F1 là có đầy đủ (có luôn example để tham khảo)
Thầy cho em hỏi. Em có dùng code này của thầy vào trong Form mẫu của em. Form này em dùng làm mẫu để chia tách thành nhiều file thông qua một file tổng. (A, B, C.. chẳng hạn) nhưng cứ mỗi lần mở 1 trong 3 file trên là số lần mở đều tăng ví dụ mở A là 7 thì khi mở B là 8. Có cách nào để mỗi file có số lần mở không phụ thuộc vào file kia không ạ?
Bài đã được tự động gộp:

Thầy cho em hỏi. Em có dùng code này của thầy vào trong Form mẫu của em. Form này em dùng làm mẫu để chia tách thành nhiều file thông qua một file tổng. (A, B, C.. chẳng hạn) nhưng cứ mỗi lần mở 1 trong 3 file trên là số lần mở đều tăng ví dụ mở A là 7 thì khi mở B là 8. Có cách nào để mỗi file có số lần mở không phụ thuộc vào file kia không ạ?

Em làm được rồi

Em thay đổi như vậy. Hôm nay lại học được thêm một hàm hay rồi :). Cảm ơn thầy!

MyCount = Application.ThisWorkbook.Name
Solan = GetSetting(MyCount, "A", "Count", 0) + 1
SaveSetting MyCount, "A", "Count", Solan
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom