Tặng các bạn File đăng nhập, Admin có thể tạo User mới.

Liên hệ QC

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,581
Được thích
16,641
Giới tính
Nam
attachment.php


Do nhiều bạn có nhu cầu rất cao về bảo mật nên thường có ý muốn gì đó cho việc riêng tư, hiểu được điều đó tôi đã tạo ra một file (mấy ngày trời) test đi test lại đổi đi đổi lại xem có phát sinh lỗi gì không.

Hôm nay, tôi thấy tương đối ổn định nên muốn gửi lên tặng các bạn tham khảo. Dĩ nhiên, ngoài việc khóa Excel của chính Excel mới có thể gọi là bảo mật cao, thì mọi việc Protect (Sheet, Structure, VBA) đều không là vấn đề gì đối với các cao thủ. Song đối với những người khác thì cũng khó mà bẻ khóa được. Ngoài ra, file này được tạo ra cũng khá công phu nên nhìn vào ta có thể thấy nó khá "rồ" và "hoành tá tràng". Mặc dù tính bảo mật không mấy là cao, nhưng tính thẩm mỹ của nó cũng ít nhiều làm người khác hài lòng. Nếu các bạn biết thiết kế, các bạn sẽ phát triển nó tốt hơn.

Sheet HOME Khi chỉ mỗi Admin đăng nhập lần đầu tiên:

attachment.php


Sheet HOME sau khi Admin tạo thêm sheet/User:

attachment.php


Nếu bạn là người sở hữu file này, tôi tạm gọi là Admin, bạn có thể tạo thêm 12 sheet cho riêng mình sử dụng và 150 sheet cho mỗi User. Ngoài ra file có 3 sheet mặc định, không được xóa: HOME, ADMIN, AD_SETTING.

attachment.php


Bạn có thể thay đổi tên của tất cả các sheet, ngoại trừ sheet HOME, thông qua công cụ reset.

attachment.php


Bạn cũng có thể thêm User (150 user) thông qua công cụ create user, mỗi sheet đều có nút Home để quay về sheet Home.

Bất cứ sheet nào bạn xóa thì khi thêm sheet, vị trị nào bị xóa ở giữa các sheet thì sheet mới sẽ chèn vào đó, ví dụ có User1, User3 mà chưa có User2 (do bị xóa) thì khi thêm sheet nó sẽ tạo ra sheet User2.

attachment.php


Bạn cũng có thể xóa User/Sheet, thông qua công cụ delete, ngoại trừ 3 sheet mặc định.

attachment.php


Mỗi User kể cả Admin khi đăng nhập lần đầu tiên đều phải thay đổi User Name và Password.

User có thể thay đổi User và Password bất cứ lúc nào.

attachment.php


Hình ảnh mang tính chất minh họa, file sẽ gửi ở bài sau.
 

File đính kèm

  • JoinFile.jpg
    JoinFile.jpg
    52.9 KB · Đọc: 2,234
  • MenuDelete.jpg
    MenuDelete.jpg
    29.7 KB · Đọc: 2,247
  • MenuCreate.jpg
    MenuCreate.jpg
    44.8 KB · Đọc: 2,163
  • QuyenAdmin.jpg
    QuyenAdmin.jpg
    33 KB · Đọc: 2,135
  • UserReset.jpg
    UserReset.jpg
    72.3 KB · Đọc: 2,148
  • AdminReset.jpg
    AdminReset.jpg
    99.3 KB · Đọc: 2,121
  • AdminDelete.jpg
    AdminDelete.jpg
    60.8 KB · Đọc: 2,098
  • CreatUser.jpg
    CreatUser.jpg
    48.7 KB · Đọc: 2,128
Cho hỏi, với file của tôi, trong chế độ Share, tức ít nhất 2 người cùng làm được trên file đó, vậy có lỗi đăng nhập gì không? Sheet nó có mở đồng loạt hay không? Tôi không có điều kiện để test điều này.
Với ver trước đây thì có, nhưng giờ thì đã khắc phục được điều này rồi anh ạ. VÌ mỗi khi save là các sheet ẩn hết chỉ còn lại sheet home nên sheet ở máy trạm ko còn hiện lên nữa.
 
Upvote 0
Em đang share folder chưa file của em ở chế độ read-only với Everyone. Em thấy các macro vẫn hoạt động bình thường ở máy khác mà anh.
Để ngăn SaveAs thì trong Module của Thisworkbook thêm vào sự kiện có sẳn:

Mã:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
[COLOR=#0000cd]    If SaveAsUI Then[/COLOR]
[COLOR=#0000cd]        If InputBox("Nhap mat khau", "QUYEN SAVE AS") <> "[/COLOR][COLOR=#ff0000]WriteSomeThing[/COLOR][COLOR=#0000cd]" Then[/COLOR]
[COLOR=#0000cd]            Cancel = True[/COLOR]
[COLOR=#0000cd]            Exit Sub[/COLOR]
[COLOR=#0000cd]        End If[/COLOR]
[COLOR=#0000cd]    Else[/COLOR]
[COLOR=#ff8c00]        ''------------------------------------------[/COLOR]
[COLOR=#ff8c00]        ''Code co san nhet vao day![/COLOR]
[COLOR=#0000cd]    End If[/COLOR]
End Sub

Với WriteSomeThing muốn đặt mật khẩu là gì thì tùy, để phòng việc chính mình Save As nữa chứ.

Tôi mà SaveAs không được thì tôi copy nguyên folder luôn.
 
Upvote 0
Thôi nghỉ nha, có gì mai tính tiếp nhé! G9--=----=----=--
 
Upvote 0
Mình cần file này lâu rồi mà chưa tìm được. Cám ơn anh rất nhiều.

Do tính phức tạp nên cũng không lường trước được những tình huống, vì thế khi tải file về, ai mà phát hiện ra lỗi gì thì gửi lỗi đó lên đây đề cùng nhau xử lý nhé.

Trong file tôi lường khả năng Share Workbook cao nên tôi chỉ dùng biến mảng để ghi nhận tên và quyền admin nên trong quá trình thực hiện, nếu cái gì đó phát sinh ra lỗi, ngay lập tức biến này sẽ bị giải phóng. Ngoại trừ chọn sheet qua lại (mở sẳn) thì không thực hiện được các nút lệnh nào khác (có thông báo), trong trường hợp này, nên thoát file và đăng nhập lại. Rất tiếc cho lỗi bất tiện này!

Mọi password đều là: HoangTrongNghia

Khi tải file về, sau khi đăng nhập, bạn phải Unprotect Sheet (HOME & AD_SETTING), UnProtect Workbook và đăng nhập vào VBA, thay đổi password VBA. Đồng thời thay đổi Hằng số này tại Module: mdlPublic

Public Const pubPwd As String = "HoangTrongNghia"

Bạn đổi tên Pass lại thay cho "HoangTrongNghia".

Như vậy, sau khi đổi xong thì bạn chính là Admin rồi, bạn thao tác gì đó (tạo user) thì các việc sheet hay workbook protect đã mang pass của bạn. Còn không biết thao tác thì cứ thế mà dùng vậy.

Mặc định khi mở file là ADMIN và password là Admin.

Hy vọng các bạn cảm thấy tiện lợi cho công việc của mình.

===============================

Mới đổi file có thêm nút Re-Sign In, nếu giữa chừng bị lỗi phải đăng nhập lại thì không cần phải thoát file mà chỉ cần bấm nút!

attachment.php
 
Upvote 0
Cái nút thêm xong chửa anh ới --=0--=0--=0--=0
Bạn làm như thần tiên vậy, mai không biết xong chưa. Một lần thay đổi là cả ngàn dòng lệnh viết ra, rồi thử tới thử lui xem có lỗi gì không để bẩy lỗi hoặc viết lại, tùm lum thứ. Nhưng cái thứ mà tôi sợ nhất ở file của bạn là bạn chạy sự kiện tùm lum! Nếu chỉ dành cho sheet đó thì sao không viết sự kiện ở sheet đó mà phải viết trong Thisworkbook thế chả biết.
 
Upvote 0
Bạn làm như thần tiên vậy, mai không biết xong chưa. Một lần thay đổi là cả ngàn dòng lệnh viết ra, rồi thử tới thử lui xem có lỗi gì không để bẩy lỗi hoặc viết lại, tùm lum thứ. Nhưng cái thứ mà tôi sợ nhất ở file của bạn là bạn chạy sự kiện tùm lum! Nếu chỉ dành cho sheet đó thì sao không viết sự kiện ở sheet đó mà phải viết trong Thisworkbook thế chả biết.
Em gà mờ mà, nhờ vả với lại vớ được cái code nào trong GPE sửa được chút chút đúng ý là phang vào chứ có biết nhiều đâu. Nhờ anh có thời gian thì sửa hộ em cho hợp lý với ạ. Em đang trong quá trình mò mẫm nên cái gì cũng khó +-+-+-++-+-+-++-+-+-++-+-+-+
 
Upvote 0
Em gà mờ mà, nhờ vả với lại vớ được cái code nào trong GPE sửa được chút chút đúng ý là phang vào chứ có biết nhiều đâu. Nhờ anh có thời gian thì sửa hộ em cho hợp lý với ạ. Em đang trong quá trình mò mẫm nên cái gì cũng khó +-+-+-++-+-+-++-+-+-++-+-+-+
Tôi đã thực hiện nút Insert cho bạn rồi đó.

attachment.php



Gọi là nút chứ cả một cái FORM và nhiều xử lý khác chứ có dễ dàng gì đâu. Nếu Insert cái sheet và đặt tên cho nó thôi thì quá dễ rồi, phải chọn nó thuộc là sheet để sử dụng hay là User để điều khiển nữa chứ. Sau đó lại Inser cho các hạng mục một Sheet được User nào sử dụng và một User thì ai là người được truy cập vào và User này được quyền sử dụng sheet nào nữa chứ đâu phải giỡn chơi. Bổ sung thêm Tiêu đề cho Shape vì tên của Shape chính là tên của sheet, còn cái tiêu đề trên shape, cái chữ hiển thị ra trên shape đó chính là caption hay gọi nôm na là tiêu đề cho dễ, thì ta có thể gõ tiếng Việt, hoa hay thường đều được để dễ dàng nhìn thấy (ghi vào hay không cũng được, không ghi thì nó hiển thị tên sheet vừa đặt).

attachment.php


Nếu tạo User thì nó có nút hoa văn xanh, còn tạo sheet nó có nút màu vàng vàng, và LƯU Ý rằng khi tạo ra một sheet/user nếu User nào được quyền sử dụng thì xem các shape được tạo nó nằm rải rác trên cột N ở các vị trí 2, 4, 6, 8, ... (để ý đến trang HOME và các trang chính của các User được truy cập sheet/user mới đó mà rê các shape này đúng vị trí thiết kế, riêng HOME chỉ có nút khi tạo USER còn ADMIN luôn luôn có shape)

attachment.php


Đặc biệt Form Reset tạo ra hiệu ứng bung ra "dịu dàng và nhẹ nhàng" hơn là những phiên bản trước, có thêm Tiêu đề cho Shape nữa)

attachment.php


Tôi chỉ giới thiệu thôi, sẽ gửi file cho bạn qua Email.

Với các bạn khác, tôi sẽ làm cho nhẹ nhàng hơn gửi tặng các bạn sau nhé!
 

File đính kèm

  • Reset.jpg
    Reset.jpg
    70.6 KB · Đọc: 105
  • Insert.jpg
    Insert.jpg
    135.2 KB · Đọc: 108
  • TrangChinh.jpg
    TrangChinh.jpg
    49.5 KB · Đọc: 109
  • Setting.jpg
    Setting.jpg
    36.2 KB · Đọc: 106
Upvote 0
Em cảm ơn anh. Em nhận được mail rồi ạ. Đang dùng và rất tuyệt. Bạn nào muốn tham khảo form mới này của a Nghĩa thì để mail lại. A Nghĩa mà ko có time thì mình sẽ send cho nhé.
 
Upvote 0
Chào anh Nghĩa

Em cám ơn anh vì những bài viết rất hay và những file ứng dụng anh đã gửi lên giành tặng mọi người.
Em rất muốn nếu được anh có thể gửi cho em 1 file có hình như bài viết bên trên được không ạ?
Mục đích muốn ứng dụng vào công việc của mình.
Đ/c mail của em. vietthai299@gmail.com
Cám ơn anh rất nhiều.
 
Upvote 0
anh Nghĩa hoặc anh Pinklove có thể cho em xin file với ạ, mail: hieu.tm1985@gmail.com.
em cám ơn nhiều.
 
Upvote 0
anh Nghĩa hoặc anh Pinklove có thể cho em xin file với ạ, mail: hieu.tm1985@gmail.com.
em cám ơn nhiều.
Tôi rút gọn file của tôi đang dùng lại và gửi cho bạn cái cơ bản của file đăng nhập của anh Nghĩa đây nhé.
ADMIN - pass: Admin
USER1 - pass: User1
Các pass Unprotect khác: 1
Bạn tự tạo/xóa các sheet data và user riêng của mình nhé.
 

File đính kèm

  • QuyenDangNhap.xls
    411 KB · Đọc: 277
Lần chỉnh sửa cuối:
Upvote 0
Anh Nghĩa cho mình hỏi, điều chỉnh ntn để khi mở file Quyendangnhap thì hiện lên cửa sổ đăng nhập, chứ không phải vào hộp thoại Security option điều chỉnh lại mới hiện lên hộp đăng nhập. Thanks
 
Upvote 0
Upvote 0
Chào Nghĩa!
Cám ơn bạn đã nhiệt tình chia sẽ với AE
Bạn có thể giúp mình:
- Khi tạo USER không cần tạo Sheet
- Khi tạo Sheet cũng không cần tạo USER
Vì trong quá trình làm việc các user (nhân viên bán hàng chẳng hạn) thay đổi hoặc số sheets cố định nhưng NV thay đổi)
Các sheet cũng thay đổi vì dữ liệu phụ thuộc công việc
Cảm ơn nhé!
(Mail: haiphan.gsp@gmail.com)
 
Upvote 0
Mình muốn sửa mọi pass từ VBA đến pass Sheets và pass Workbook và pass ADMIN là giống nhau -\\/. thì làm sao nhỉ?
ví dụ: Public Const pubPwd As String = Sheets("AD_SETTING").Range("C3").value
 
Lần chỉnh sửa cuối:
Upvote 0
Mình sửa lại như vậy có ổn không nhỉ? Mọi pass của ADMIN là giống nhau -\\/.
Public Const pubPwd As String = Sheets("AD_SETTING").Range("C3").value

Với const bạn chỉ có ghi xác định, không có một sự tính toán, không có tham chiếu nào trong const được cả!
 
Upvote 0
USER NAME tại sao tối đa là 12 ký tự, tôi muốn tăng lên có anh hưởng gì không bạn Hoàng Trọng Nghĩa?
 
Upvote 0
Web KT
Back
Top Bottom