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

Liên hệ QC

Người dùng đang xem chủ đề này

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,662
Được thích
16,725
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

  • MenuDelete.jpg
    MenuDelete.jpg
    29.7 KB · Đọc: 2,251
  • MenuCreate.jpg
    MenuCreate.jpg
    44.8 KB · Đọc: 2,167
  • QuyenAdmin.jpg
    QuyenAdmin.jpg
    33 KB · Đọc: 2,139
  • UserReset.jpg
    UserReset.jpg
    72.3 KB · Đọc: 2,151
  • JoinFile.jpg
    JoinFile.jpg
    52.9 KB · Đọc: 2,238
  • AdminDelete.jpg
    AdminDelete.jpg
    60.8 KB · Đọc: 2,101
  • AdminReset.jpg
    AdminReset.jpg
    99.3 KB · Đọc: 2,124
  • CreatUser.jpg
    CreatUser.jpg
    48.7 KB · Đọc: 2,131
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
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em mong một ngày gần nhất để gặp anh Nghĩa ngồi tâm sự nek sdt của em : 01694376085
 
Upvote 0
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

Em thấy nếu như khi thêm tên sheet theo tên tự đặt của riêng thì hay hơn anh ah. Cám ơn A.
 
Upvote 0
Em thấy nếu như khi thêm tên sheet theo tên tự đặt của riêng thì hay hơn anh ah. Cám ơn A.
Mặc định nó là vậy, nhưng bạn hoặc người dùng có thể Reset lại, User Name đó chính là tên sheet, khi bạn thay đổi nó sẽ thay đổi theo. Nhớ là đừng làm thủ công, làm bằng nút lệnh hết nhé!
 
Upvote 0
minh khong mo duoc file pass la gi admin khonh duoc
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
Chưa hiểu ý của bạn Nghĩa lắm, có phải là từ giờ trở đi, muốn bảo mật file excel thì phải dùng file của bạn như là template mẫu rồi phát triển ý đồ trên file này
 
Upvote 0
Chưa hiểu ý của bạn Nghĩa lắm, có phải là từ giờ trở đi, muốn bảo mật file excel thì phải dùng file của bạn như là template mẫu rồi phát triển ý đồ trên file này
Đúng là như vậy, các bạn cứ tùy biến và phát triển trên nền tảng có sẳn, sheet các bạn tạo ra các bạn có thể làm CSDL tùy thích.
 
Upvote 0
Em sử dụng và có một số chỗ vướng mắc, a Nghĩa xem lại dùm:
- Khi đăng nhập bằng admin xong nếu sử dung re-sign in đăng nhập vào user thì vẫn vào được ADMIN và AD-SETTING, chỉ có các sheet ADMIN_001... mới tạo là không vào được. Muốn user không vào được 2 sheet đó thì phải thoát hẳn file đăng nhập lại bằng user thì mới được.
- Em muốn các user và các Admin dùng chung một số sheet nào đó thì em phải làm sao???? Ví dụ trong file em gửi, nếu em muốn giữ nguyên các sheet đã tạo, sau đó em muốn tất các các admin khi đăng nhập thì sẽ đăng nhập chung vào 1 trang chủ có đầy đủ button link đến các sheet, còn user thì đăng nhập vào trang chủ khác chỉ có button để link đến sheet xem báo cáo thôi. Không biết anh có thể làm thêm một mục đó là khi tạo thêm một ad hay một user thì sẽ được chọn group cho user đó. Mỗi group khi đăng nhập vào và ấn button của user ở trang home sẽ được link đến một trang chủ chung cho Group đó. Ý tưởng em thế thôi chứ e ko biết có làm được ko, cứ nói đại ạ.
- Nếu không thể thì nhờ anh hướng dẫn giúp em làm sao có thể áp dụng file của anh vào file mà em gửi kèm theo. Trong đó em muốn admin có thể xem, sửa được các sheet, còn user thì chỉ xem được 2 sheet báo cáo mà thôi.

File của em đây ạ.
 
Upvote 0
Em sử dụng và có một số chỗ vướng mắc, a Nghĩa xem lại dùm:
- Khi đăng nhập bằng admin xong nếu sử dung re-sign in đăng nhập vào user thì vẫn vào được ADMIN và AD-SETTING, chỉ có các sheet ADMIN_001... mới tạo là không vào được. Muốn user không vào được 2 sheet đó thì phải thoát hẳn file đăng nhập lại bằng user thì mới được.
- Em muốn các user và các Admin dùng chung một số sheet nào đó thì em phải làm sao???? Ví dụ trong file em gửi, nếu em muốn giữ nguyên các sheet đã tạo, sau đó em muốn tất các các admin khi đăng nhập thì sẽ đăng nhập chung vào 1 trang chủ có đầy đủ button link đến các sheet, còn user thì đăng nhập vào trang chủ khác chỉ có button để link đến sheet xem báo cáo thôi. Không biết anh có thể làm thêm một mục đó là khi tạo thêm một ad hay một user thì sẽ được chọn group cho user đó. Mỗi group khi đăng nhập vào và ấn button của user ở trang home sẽ được link đến một trang chủ chung cho Group đó. Ý tưởng em thế thôi chứ e ko biết có làm được ko, cứ nói đại ạ.
- Nếu không thể thì nhờ anh hướng dẫn giúp em làm sao có thể áp dụng file của anh vào file mà em gửi kèm theo. Trong đó em muốn admin có thể xem, sửa được các sheet, còn user thì chỉ xem được 2 sheet báo cáo mà thôi.

File của em đây ạ.
Tôi chưa nói gì đến file của bạn, tôi nói file tôi trước cái đã.

1) ADMIN, ngoài việc có sẳn 2 sheet ADMIN & ADMIN_SET, có thể tạo thêm 12 sheet cho chính ADMIN sử dụng. Vì thế khi ADMIN đăng nhập, và chỉ có ADMIN mới xem được nhiều sheet của ADMIN.

2) Các sheet do ADMIN tạo ra không có User hay Pass mà phụ thuộc vào quyền đăng nhập của ADMIN, không ai được xem các sheet này, ngoại trừ ADMIN muốn xem (mặc định là sau khi thoát file chúng sẽ ẩn cho đến khi ADMIN bấm nút gọi chúng).

3) Sau khi ADMIN tạo ra các USER, mỗi USER là một sheet và chỉ có một mà thôi. Khi đăng nhập theo quyền của USER thì USER đó chỉ được sử dụng 2 sheet, đó là sheet HOME và sheet của USER đó mà thôi, họ không có quyền truy cập đến bất kỳ USER nào khác, dĩ nhiên không thể đụng tới các sheet thuộc ADMIN.

4) ADMIN được quyền xem mọi sheet, quản lý mọi sheet, cho nên khi ADMIN gọi sheet của bất kỳ USER nào thì sheet thuộc USER đó hiện ra.

Bạn theo nguyên tắc đó mà làm việc. Riêng nếu muốn quyền USER tạo thêm 1 vài sheet thì tôi sẽ nghiên cứu thêm (tức phải thay đổi toàn bộ hướng lập trình cũ, rất phức tạp).
 
Upvote 0
3) Sau khi ADMIN tạo ra các USER, mỗi USER là một sheet và chỉ có một mà thôi. Khi đăng nhập theo quyền của USER thì USER đó chỉ được sử dụng 2 sheet, đó là sheet HOME và sheet của USER đó mà thôi, họ không có quyền truy cập đến bất kỳ USER nào khác, dĩ nhiên không thể đụng tới các sheet thuộc ADMIN.
Nếu như vậy thì rất bất tiện trong việc quản lý khi dùng chung cơ sở dữ liệu giữa các user. Em nghĩ rất ít trường hợp mà cần thiết mỗi một user là một sheet cố định mà là mỗi nhóm user là một số sheet. Như vậy có vẻ hợp lý hơn. EM đóng góp bằng ý kiến chủ quan của em thôi ạ.
 
Upvote 0
Nếu như vậy thì rất bất tiện trong việc quản lý khi dùng chung cơ sở dữ liệu giữa các user. Em nghĩ rất ít trường hợp mà cần thiết mỗi một user là một sheet cố định mà là mỗi nhóm user là một số sheet. Như vậy có vẻ hợp lý hơn. EM đóng góp bằng ý kiến chủ quan của em thôi ạ.
Tôi chẳng hiểu kiểu bạn nói, chẳng lẽ User này được xem sheet của User khác hay sao? Vậy phân quyền để làm gì? Chuyện ai nấy làm, chỉ có Admin là xem được họ muốn làm gì thôi. Nếu muốn dùng chung thì tạo một User chung, ai muốn vào thì đăng nhập theo User đó.
 
Upvote 0
Tôi chẳng hiểu kiểu bạn nói, chẳng lẽ User này được xem sheet của User khác hay sao? Vậy phân quyền để làm gì? Chuyện ai nấy làm, chỉ có Admin là xem được họ muốn làm gì thôi. Nếu muốn dùng chung thì tạo một User chung, ai muốn vào thì đăng nhập theo User đó.
Ý em là, với các user ngang quyền thì có thể xem dữ liệu của nhau mà anh. Ví dụ như với một sheet dữ liệu em muốn cấp cho 3 người dùng, chẳng lẽ em lại copy sheet đó ra làm 3, rồi mỗi lần sửa dữ liệu em lại sửa trong cả 3 sheet. Anh xem trong cái file em gửi có lẽ a sẽ hiểu rõ ý em hơn ạ.
 
Upvote 0
Ý em là, với các user ngang quyền thì có thể xem dữ liệu của nhau mà anh. Ví dụ như với một sheet dữ liệu em muốn cấp cho 3 người dùng, chẳng lẽ em lại copy sheet đó ra làm 3, rồi mỗi lần sửa dữ liệu em lại sửa trong cả 3 sheet. Anh xem trong cái file em gửi có lẽ a sẽ hiểu rõ ý em hơn ạ.
theo mình,
nếu 3 người cùng xem 1 sheet hoặc nhiều sheet cùng lúc thì ko vấn đề gì, còn việc cho phép nhiều người cùng lúc chỉnh sửa vào 1 sheet thì ... +-+-+-+
 
Lần chỉnh sửa cuối:
Upvote 0
theo mình,
nếu 3 người cùng xem 1 sheet hoặc nhiều sheet cùng lúc thì ko vấn đề gì, còn việc cho phép nhiều người cùng lúc chỉnh sửa vào 1 sheet thì ... +-+-+-+
Mình không rành về VBA nên mình chỉ nói lên ý kiến chủ quan của mình thôi bạn ạ. Còn khả năng thực hiện được hay không thì mình ko biết (biết mình làm luốn cho rồi khỏi kêu :D) Mình cũng chỉ muốn đóng góp ý kiến với a Nghĩa để chương trình được toàn diện hơn.
Với ý kiến của bạn mình nghĩ nếu đã xem được thì sửa được chứ bạn. Bới vì với một nhóm user thì sẽ được quyền tác động trong một số sheet nhất định mà. Vì vậy mình mới nói a Nghĩa thử nghiên cứu xem khi mà tạo user mới có thêm một mục là chọn group cho nó chẳng hạn, với group đó mình tạo trước bao gồm những sheet nào rồi.
 
Upvote 0
Mình xin góp 1 ý kiến nhỏ:
- Mọi người đều thống nhất là file excel bảo mật không cao, nên việc phân quyền xem file cho admin và user khó mà "qua mặt" được người "tò mò" -> tính khả thi của tiện ích anh Nghĩa làm sẽ không nhiều lắm (mong anh đừng phận ý, bản thân mình đã học thêm được nhiều điều từ code anh viết)
- Mấu chốt trong file excel này là sheet AD_SETTING, và việc để nó visible khá dễ dàng (sau khi unprotect activewookbook), và sau khi xem được sheet này thì mình có toàn quyền admin luôn ^^.
Đề xuất: anh Nghĩa xem có phương pháp nào để mã hóa, ẩn các pass, hoặc giấu pass ở một nơi nào đó (ví dụ registry), hoặc phải có mã check nào đó (giống như mã nạp thẻ) để kiểm tra pass không?
 
Upvote 0
Cho em hỏi thêm nếu em muốn khi gọi sheet nào thì chỉ sheet đó hiện lên còn các sheet khác bị ẩn hết thì em phải sửa chỗ nào ạ??
 
Upvote 0
Ý em là, với các user ngang quyền thì có thể xem dữ liệu của nhau mà anh. Ví dụ như với một sheet dữ liệu em muốn cấp cho 3 người dùng, chẳng lẽ em lại copy sheet đó ra làm 3, rồi mỗi lần sửa dữ liệu em lại sửa trong cả 3 sheet. Anh xem trong cái file em gửi có lẽ a sẽ hiểu rõ ý em hơn ạ.

Nếu tạo 1 User mà có đến Max là từ 1 đến 6 sheet và nhiều người dùng chung 1 User đó có được không? Tức là khi vào User đó người dùng có thể xem được tới 6 sheet được tạo.

Cho em hỏi thêm nếu em muốn khi gọi sheet nào thì chỉ sheet đó hiện lên còn các sheet khác bị ẩn hết thì em phải sửa chỗ nào ạ??

Cái này không khó tí nào cả. Muốn ẩn là ẩn thôi.
 
Upvote 0
Mình xin góp 1 ý kiến nhỏ:
- Mọi người đều thống nhất là file excel bảo mật không cao, nên việc phân quyền xem file cho admin và user khó mà "qua mặt" được người "tò mò" -> tính khả thi của tiện ích anh Nghĩa làm sẽ không nhiều lắm (mong anh đừng phận ý, bản thân mình đã học thêm được nhiều điều từ code anh viết)
- Mấu chốt trong file excel này là sheet AD_SETTING, và việc để nó visible khá dễ dàng (sau khi unprotect activewookbook), và sau khi xem được sheet này thì mình có toàn quyền admin luôn ^^.
Đề xuất: anh Nghĩa xem có phương pháp nào để mã hóa, ẩn các pass, hoặc giấu pass ở một nơi nào đó (ví dụ registry), hoặc phải có mã check nào đó (giống như mã nạp thẻ) để kiểm tra pass không?
Trùi ui, cái quỷ này chỉ để làm đẹp thôi, đừng nghĩ gì đến việc bảo mật, muốn bảo mật thì Save As rồi đặt password thôi, khả năng này cao nhất đó.
 
Upvote 0
Nếu tạo 1 User mà có đến Max là từ 1 đến 6 sheet và nhiều người dùng chung 1 User đó có được không? Tức là khi vào User đó người dùng có thể xem được tới 6 sheet được tạo.
Lọ mọ mãi em cũng đưa được file em vào file của bác. Trong file mới em có tạo thêm một user là VANHANH. Em nhờ anh xem dùm theo hướng đầu tiên là chỉ sử dụng 2 acc ADMIN và VANHANH
1. Nếu e đăng nhập bằng user VANHANH em ko sử dụng được button khi mà em chọn sub sheetselect cho nó. Nó cứ báo ko đủ quyền. Có thể tạo thêm một sub tương tự cho phép link đến bất kỳ sheet nào để dùng cho nó không ạ?
2. Làm sao cho em chọn đến sheet Báo Cáo rồi khi ấn về home (Được e thay bằng biểu tượng VNPT) thì nó trở về trang tương ứng với User đăng nhập.

Cái này không khó tí nào cả. Muốn ẩn là ẩn thôi.
Anh hướng dẫn em đi ạ.

File của em đây, e đã đổi toàn bộ pass thành "1"
 
Upvote 0
Lọ mọ mãi em cũng đưa được file em vào file của bác. Trong file mới em có tạo thêm một user là VANHANH. Em nhờ anh xem dùm theo hướng đầu tiên là chỉ sử dụng 2 acc ADMIN và VANHANH
1. Nếu e đăng nhập bằng user VANHANH em ko sử dụng được button khi mà em chọn sub sheetselect cho nó. Nó cứ báo ko đủ quyền. Có thể tạo thêm một sub tương tự cho phép link đến bất kỳ sheet nào để dùng cho nó không ạ?
2. Làm sao cho em chọn đến sheet Báo Cáo rồi khi ấn về home (Được e thay bằng biểu tượng VNPT) thì nó trở về trang tương ứng với User đăng nhập.


Anh hướng dẫn em đi ạ.

File của em đây, e đã đổi toàn bộ pass thành "1"

Hiện tại, tôi chưa xem file bạn vì tôi xài điện thoại. Chỉ cần bạn nói nick VANHANH được xem những sheet nào thôi tôi sẽ làm cho bạn!
 
Upvote 0
Hiện tại, tôi chưa xem file bạn vì tôi xài điện thoại. Chỉ cần bạn nói nick VANHANH được xem những sheet nào thôi tôi sẽ làm cho bạn!
Nick VANHANH sẽ được xem 2 sheet BC tram và BC theo ten.
Nếu có thể a giúp cho em một cái sub tương tự như sub sheetselect nhưng sẽ không bị giới hạn phân quyền để sử dụng cho các link dùng chung được ko ạ.
 
Upvote 0
Anh Nghĩa đẹp zai đưa bồ đi trung thu từ hôm qua giờ chưa về nhà thì phải ấy nhỉ /-*+//-*+/
 
Upvote 0
Anh Nghĩa đẹp zai đưa bồ đi trung thu từ hôm qua giờ chưa về nhà thì phải ấy nhỉ /-*+//-*+/
Trung thu gì mà trung thu! Đang xử lý cái CALENDAR nên chưa có thời gian viết cho bạn, tôi nghĩ cái của bạn cũng không dễ nhai, nhưng tôi đang có ý tưởng mới, sẽ áp dụng khi tôi rảnh một chút. Gấp gì mà phải hối thúc phải không?
 
Upvote 0
Trung thu gì mà trung thu! Đang xử lý cái CALENDAR nên chưa có thời gian viết cho bạn, tôi nghĩ cái của bạn cũng không dễ nhai, nhưng tôi đang có ý tưởng mới, sẽ áp dụng khi tôi rảnh một chút. Gấp gì mà phải hối thúc phải không?
Ui. Hoá ra anh phải tự sướng. He he. Cũng hơi cần gấp vì yêu cầu bảo mật đối với số liệu này anh ạ. Với các anh em ở đây thì ko gọi là bảo mật nhưng với những công nhân vân hành ở chỗ em thì thế này là quá xương rồi.
Trong lúc chờ ý tưởng mới của anh Em nghĩ với form này cũng có thể ổn nếu anh có thể viết code selectsheet dùng chung để khi đó chỉ cần sử dụng chung một trang chủ và sheet nào dùng chung thì dùng code đó.
 
Upvote 0
Nếu tạo 1 User mà có đến Max là từ 1 đến 6 sheet và nhiều người dùng chung 1 User đó có được không? Tức là khi vào User đó người dùng có thể xem được tới 6 sheet được tạo.
Em tạm thời thêm 2 cái dòng này vào code của anh để cho user VANHANH vào được hai sheet báo cáo (Có chừng đó mà em mò mất 2 ngày nay đó):
Case "BC tram" If strQuyenSuDung = "ADMIN" Or strQuyenSuDung = "VANHANH" Then
Sheet13.Visible = xlSheetVisible
strSheetNameAlt = Sheet13.Name
End If
Case "BC tenQL"
If strQuyenSuDung = "ADMIN" Or strQuyenSuDung = "VANHANH" Then
Sheet14.Visible = xlSheetVisible
strSheetNameAlt = Sheet14.Name
End If


Cái này không khó tí nào cả. Muốn ẩn là ẩn thôi.
Cái này em mò mẫm mãi không được anh dành chút thời gian chỉ em đi.
 
Upvote 0
Anh Nghĩa help em với ạ. Em làm file xong rồi. Ở máy em thì chạy ngon lành, đem sang máy khác chạy nó báo lỗi như trong hình. Không hiểu vì sao luôn. (Máy e chạy win server 2003, đưa sang máy WIN 7 ko chạy được). Cái % loading nó ko có chạy.
mn2.jpgmn1.jpgmn11.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Anh Nghĩa help em với ạ. Em làm file xong rồi. Ở máy em thì chạy ngon lành, đem sang máy khác chạy nó báo lỗi như trong hình. Không hiểu vì sao luôn. (Máy e chạy win server 2003, đưa sang máy WIN 7 ko chạy được). Cái % loading nó ko có chạy.
View attachment 147862View attachment 147860View attachment 147861
Mở VBA ra, chọn form thiết kế, chọn Tool, chọn References cái nào Missing thì bỏ đi, rồi save lại. Có lẽ tôi lại thiết kế cái Control khác để thay thế cái này nữa rồi.
 
Upvote 0
Mở VBA ra, chọn form thiết kế, chọn Tool, chọn References cái nào Missing thì bỏ đi, rồi save lại. Có lẽ tôi lại thiết kế cái Control khác để thay thế cái này nữa rồi.
Em chọn trong References chỉ còn 3 cái nó ko cho remove vì đang run còn nữa bỏ hết rồi mà vẫn không được anh ạ. Làm sao biết cái nào missing được anh???
 
Upvote 0
Em bổ sung thêm cho a Nghĩa một lỗi nữa mà với lỗi này thì bảo mật chả còn gì cả, hic hic. Nếu em mở file gốc ra bằng tài khoản ADMIN rồi mở các tất cả các sheet ADMIN,AD_SETING,User1... lên, sau đó em save lại nhưng không đóng file và em sử dụng máy khác mở file lên (ở chế độ read-only) dù đăng nhập vào bằng acc User nó sẽ hiện ra toàn bộ các sheet đã được mở ở file gốc. Chỉ có sau khi save đóng file gốc lại và mở ra thì mới không bị nữa. Anh xem xét lỗi này sớm giúp em nhé.
Em nghĩ giải pháp tạm thời là anh sửa giúp cho em cái code làm sao chỉ hiện mỗi 1 sheet hiện thời còn nữa ẩn hết. Em nghĩ giải pháp đó tạm thời sẽ được.
 
Upvote 0
Em bổ sung thêm cho a Nghĩa một lỗi nữa mà với lỗi này thì bảo mật chả còn gì cả, hic hic. Nếu em mở file gốc ra bằng tài khoản ADMIN rồi mở các tất cả các sheet ADMIN,AD_SETING,User1... lên, sau đó em save lại nhưng không đóng file và em sử dụng máy khác mở file lên (ở chế độ read-only) dù đăng nhập vào bằng acc User nó sẽ hiện ra toàn bộ các sheet đã được mở ở file gốc. Chỉ có sau khi save đóng file gốc lại và mở ra thì mới không bị nữa. Anh xem xét lỗi này sớm giúp em nhé.
Em nghĩ giải pháp tạm thời là anh sửa giúp cho em cái code làm sao chỉ hiện mỗi 1 sheet hiện thời còn nữa ẩn hết. Em nghĩ giải pháp đó tạm thời sẽ được.
Tôi sẽ bổ sung, sau khi Save tất cả sheet sẽ ẩn ngoại trừ sheet Home. Còn thao tác gì khác thì tùy. Tôi đang nghiên cứu cho bạn, nên bạn đừng có hối, hư bột hư đường hết mắc công làm đi làm lại.
 
Upvote 0
Tôi sẽ bổ sung, sau khi Save tất cả sheet sẽ ẩn ngoại trừ sheet Home. Còn thao tác gì khác thì tùy. Tôi đang nghiên cứu cho bạn, nên bạn đừng có hối, hư bột hư đường hết mắc công làm đi làm lại.
Em ko hối, chỉ là trong quá trình áp dụng có lỗi gì em post lên để anh fix luôn. Và em đưa ra ý kiến của mình để anh tham khảo thôi. E chỉ có ý tưởng, chớ còn thực hiện thì bó tay. !$@!!!$@!!
 
Upvote 0
Em ko hối, chỉ là trong quá trình áp dụng có lỗi gì em post lên để anh fix luôn. Và em đưa ra ý kiến của mình để anh tham khảo thôi. E chỉ có ý tưởng, chớ còn thực hiện thì bó tay. !$@!!!$@!!
Tôi đã làm xong cho bạn rồi nè, chờ lâu quá hả? Tôi muốn khùng với file của bạn luôn. Tôi có một số ý kiến muốn góp ý cho bạn:

Khi copy sheet từ file này qua file khác, nhớ đến các Name và công thức, xem chừng sẽ chứa đường dẫn như vầy:


C:\Documents and Settings\TongDai\Desktop\[QUAN LY VAN HANH MAY NO-v1.0.xlsm]


Cách đặt tên Define Name không nên trùng với tên của tên Sheet, tên Shape, tên Sub v.v... nói chung không được trùng tên lẫn nhau.


Chỉ có tên Sheet cho phép trùng với tên Shape (điều này tôi lấy tên của shape để gọi tên sheet, điều này Excel cho phép).


Tôi thấy Define Name có tên như thế này: NgQly và Sub NgQly()


Điều này khi chạy macro đôi khi phải thêm cái tên Module đằng trước nữa đấy.


Tôi đã đổi tên sub NgQly() thành Sub NguoiQuanLy() và Sub Exp() thành Sub Exporting() do tên Sheet trùng với tên của Macro.

Trong File của bạn, nên lưu ý và đọc kỹ HƯỚNG DẪN SỬ DUNG:


0) Sửa tên USER luôn luôn bằng nút RESET USER & PASSWORD.


1) Insert thêm sheet nào thì đặt tên cho sheet đó, giả sử đặt là TRONG_NGHIA thì User sẽ là TRONG_NGHIA, copy một shape đặt tên là TRONG_NGHIA (nhìn hình, bạn có thể thấy là bạn ghi gì trên shape không thành vấn đề, bạn đặt tên nó trên Name Box mới chính xác nhé)


2) Sau đó ghi cái tên sheet đó lên sheet TRUY_CAP này ở cột tiếp theo thuộc các cột CÁC SHEET ĐƯỢC QUYỀN TRUY CẬP, ai được quyền truy cập thì copy tên sheet đó vào, dĩ nhiên đừng quên ADMIN nhé! Code sẽ chạy căn cứ vào các cột chứa sheet của ADMIN. Ngược lại, khi Delete sheet nào thì các bạn cũng xóa tên sheet đó ở trong sheet này luôn nhé!


3) Khi bạn Insert hoặc Delete sheet xong, phải nhớ bấm nút LÀM MỚI để truy cập lại mảng public.



Tôi cũng thay cái Progress bằng cái mới chắc sẽ không bị lỗi gì nữa đâu:

attachment.php


Và cái hình hài của sheet HOME nó thế này nè:

attachment.php


Nói chung bạn tải file về và kiểm tra xem có vừa ý chưa, có lỗi gì không nhé.

Ui, khuya quá rùi, ngủ thôi. Khò khò khò.--=----=----=--

-----------------------------------------------------------------------
p/s: File nặng quá tải lên hỏng có nổi (chắc do bạn add nhiều Picture quá, tôi lại làm đủ 12 tháng đều có picture). Bạn cho tôi mail đi, mai tôi gửi cho hen.
 

File đính kèm

  • DangNhap.jpg
    DangNhap.jpg
    53.2 KB · Đọc: 123
  • Menu.jpg
    Menu.jpg
    19.3 KB · Đọc: 120
Upvote 0
Với file mới này em có thể bố trí lại trang HOME theo ý muốn chứ không cần giữ nguyên đúng không ạ?
Thật ra HOME là một sheet luôn luôn không ẩn, vì ngoại trừ AdIns thì các file bình thường khác phải để ít nhất 1 sheet, Excel không cho ẩn hết (và đương nhiên, sheet này hiện lên vô thưởng vô phạt, đâu có mất dữ liệu gì đâu mà lo).

Bạn muốn làm gì trên đó cũng được thiết kế sao cũng được, chẳng quan tâm, vì tôi không làm gì với sheet này cả mà chỉ để mấy cái shape điều khiển, bạn có thể di dời hay làm gì cũng được.
 
Upvote 0
Thật ra HOME là một sheet luôn luôn không ẩn, vì ngoại trừ AdIns thì các file bình thường khác phải để ít nhất 1 sheet, Excel không cho ẩn hết (và đương nhiên, sheet này hiện lên vô thưởng vô phạt, đâu có mất dữ liệu gì đâu mà lo).

Bạn muốn làm gì trên đó cũng được thiết kế sao cũng được, chẳng quan tâm, vì tôi không làm gì với sheet này cả mà chỉ để mấy cái shape điều khiển, bạn có thể di dời hay làm gì cũng được.
Em không thể xóa sheet dù đã unlock Protect Structure rồi anh ạ. Sau khi chọn Delete sheet nó cứ báo lỗi như hình. Tắt file vào lại thì vẫn y nguyên. ANh còn protect chỗ nào chỉ em với.
1.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Em không thể xóa sheet dù đã unlock Protect Structure rồi anh ạ. Sau khi chọn Delete sheet nó cứ báo lỗi như hình. Tắt file vào lại thì vẫn y nguyên. ANh còn protect chỗ nào chỉ em với.
View attachment 148088

Kakaka, biết ngay mà, chắc phải làm thêm công cụ cho chú mày xơi nữa! Mà cái file đó cơ bản đã dáp ứng cho công việc chưa?
 
Upvote 0
Kakaka, biết ngay mà, chắc phải làm thêm công cụ cho chú mày xơi nữa! Mà cái file đó cơ bản đã dáp ứng cho công việc chưa?
Hiện tại thì đang ổn anh ạ. Vì em lúc trưa giờ mò cái delete sheet mãi nên cũng chưa test hết được. Có cái phần xóa dữ liệu cũ trong sheet Exp bị lỗi em mò cũng chưa ra, nó báo lỗi đoạn này
Sheets("Exporting").Range("A14:C1000000,E14:I1000000").ClearContents
Em xem trong file thấy anh vẫn để tên sheet là Exp nên e đã sửa thành
Sheets("Exp").Range("A14:C1000000,E14:I1000000").ClearContents

Nhưng vẫn ko được. Hỏng hỉu nó lỗi sao nữa.
 
Upvote 0
Hiện tại thì đang ổn anh ạ. Vì em lúc trưa giờ mò cái delete sheet mãi nên cũng chưa test hết được. Có cái phần xóa dữ liệu cũ trong sheet Exp bị lỗi em mò cũng chưa ra, nó báo lỗi đoạn này

Em xem trong file thấy anh vẫn để tên sheet là Exp nên e đã sửa thành


Nhưng vẫn ko được. Hỏng hỉu nó lỗi sao nữa.
Bạn thử nghĩ xem, file 65536 dòng, bạn bắt nó xóa 100 ngàn dòng, hỏi nó chịu xóa hay không? Muốn xóa được thì convert nó qua Excel trên 2003 thôi.

Đó, vấn đề đặt tên trùng thì khi Replace nó lại lộn xộn như vậy đó. Chú ý đừng để chuyện này xảy ra nữa nhé.
 
Upvote 0
Bạn thử nghĩ xem, file 65536 dòng, bạn bắt nó xóa 100 ngàn dòng, hỏi nó chịu xóa hay không? Muốn xóa được thì convert nó qua Excel trên 2003 thôi.

Đó, vấn đề đặt tên trùng thì khi Replace nó lại lộn xộn như vậy đó. Chú ý đừng để chuyện này xảy ra nữa nhé.

Chỉ được cái tội hay hỏi nhưng mỗi lần hỏi xong em thấy đỡ ngu đi chút chút. +-+-+-++-+-+-++-+-+-+
 
Upvote 0
Hiện tại thì đang ổn anh ạ. Vì em lúc trưa giờ mò cái delete sheet mãi nên cũng chưa test hết được. Có cái phần xóa dữ liệu cũ trong sheet Exp bị lỗi em mò cũng chưa ra, nó báo lỗi đoạn này

Em xem trong file thấy anh vẫn để tên sheet là Exp nên e đã sửa thành


Nhưng vẫn ko được. Hỏng hỉu nó lỗi sao nữa.
Đây là phiên bản mới, tôi cũng đã sửa sub này cho bạn thành:

Mã:
Sub Xoa_DL()
    If MsgBox("Ban chac chan muon xoa du lieu chu?", vbYesNo, "Xac nhan thong tin") <> 6 Then Exit Sub
    Dim EndRow As Long
    With Sheets("EXP")
        EndRow = fLastRow(.UsedRange)
        If EndRow > 13 Then
            .Range("A14:C" & EndRow).ClearContents
            .Range("E14:I" & EndRow).ClearContents
        End If
    End With
End Sub

Thêm nút lệnh XÓA SHEET trong sheet ADMIN_SETTING. Khi xóa sheet nó sẽ xóa luôn các nút lệnh liên quan đến sheet đó ở các sheet khác. Nếu đó là Sheet thuộc User quản lý, tức xóa User, thì những gì liên quan đến User đó sẽ được xóa trong ADMIN_SETTING.

Xem file để biết thêm chi tiết.

À, tôi lại phải gửi mail cho bạn nữa rồi, tải thử lần nữa vẫn không được.
 

File đính kèm

  • NewVersion.jpg
    NewVersion.jpg
    70.5 KB · Đọc: 113
Upvote 0
Em cảm ơn anh. EM vừa nhận được mail. Em sẽ xem ngay
 
Upvote 0
Hay tuyệt với cái nút xóa sheet anh ạ. Nhưng e thắc mắc tại sao a ko làm tương tự với cái nút thêm sheet (thêm user). Như vậy có khỏe hơn ko ạ. /-*+//-*+//-*+/
 
Upvote 0
Hay tuyệt với cái nút xóa sheet anh ạ. Nhưng e thắc mắc tại sao a ko làm tương tự với cái nút thêm sheet (thêm user). Như vậy có khỏe hơn ko ạ. /-*+//-*+//-*+/
Không phải tôi không muốn thêm, nhưng tôi không biết vị trí cái nút link đến sheet thêm đó sẽ đặt ở đâu nữa!
 
Upvote 0
Không phải tôi không muốn thêm, nhưng tôi không biết vị trí cái nút link đến sheet thêm đó sẽ đặt ở đâu nữa!
Theo ý em thì tạo ra 2 nút thêm. Nếu thêm user thì chỉ cần đặt link sheet ở trang home là đủ. Ở trong sheet user mới tạo sẽ mặc định có nút HOME và banner chương trình (nếu có thể).
Còn nếu thêm sheet data thì khi thêm có thể đưa ra một list các user được truy cập vào đó cho mình chọn. Nếu chọn user nào thì sẽ thêm vào ở user đó.
Thêm một ý nữa là trong hai cái nút để thêm đó ta có thể Edit quyền được truy cập của user cũng bằng cách chọn vào list.
 
Lần chỉnh sửa cuối:
Upvote 0
Theo ý em thì tạo ra 2 nút thêm. Nếu thêm user thì chỉ cần đặt link sheet ở trang home là đủ. Ở trong sheet user mới tạo sẽ mặc định có nút HOME và banner chương trình (nếu có thể).
Còn nếu thêm sheet data thì khi thêm có thể đưa ra một list các user được truy cập vào đó cho mình chọn. Nếu chọn user nào thì sẽ thêm vào ở user đó.
Bạn chả hiểu tôi nói gì cả! Tôi sẽ đặt nút tên sheet đó ở vị trí nào của sheet HOME, của sheet ADMIN? Lỡ đặt chồng lên nút khác và che khuất nút đó thì sao?
 
Upvote 0
Bạn chả hiểu tôi nói gì cả! Tôi sẽ đặt nút tên sheet đó ở vị trí nào của sheet HOME, của sheet ADMIN? Lỡ đặt chồng lên nút khác và che khuất nút đó thì sao?
Cái NameBox có thể sử dụng trong code được ko anh? Nếu vận dụng được nó thì ta có thể quy định đặt các nút trong một range nào đó, với điều kiện là so sánh nếu namebox đã có thì đặt ở vị trí như thế nào đó so với namebox đó trong range.
 
Upvote 0
Cái NameBox có thể sử dụng trong code được ko anh? Nếu vận dụng được nó thì ta có thể quy định đặt các nút trong một range nào đó, với điều kiện là so sánh nếu namebox đã có thì đặt ở vị trí như thế nào đó so với namebox đó trong range.
Không quy định được đâu, có thể tôi cho nó ở vị trí mặc định tại ô A1, sau khi tạo xong thì người dùng có thể rê nó đi đâu tùy ý, chẳng lẽ lại lười đến nổi không rê được nó vào một ví trí tốt đẹp hay sao?

Trả tiền bản quyền đấy nhé! Kakaka
 
Upvote 0
Không quy định được đâu, có thể tôi cho nó ở vị trí mặc định tại ô A1, sau khi tạo xong thì người dùng có thể rê nó đi đâu tùy ý, chẳng lẽ lại lười đến nổi không rê được nó vào một ví trí tốt đẹp hay sao?

Trả tiền bản quyền đấy nhé! Kakaka
Anh Nghĩa còn thức không em mời cafe. Em đang phải để cả ca cà phê bên cạnh để thức mà làm đây, đang nhiều cái muốn hỏi nhưng nín chờ giải quyết từng việc một. :-=:-=
 
Upvote 0
Anh Nghĩa còn thức không em mời cafe. Em đang phải để cả ca cà phê bên cạnh để thức mà làm đây, đang nhiều cái muốn hỏi nhưng nín chờ giải quyết từng việc một. :-=:-=
Hỏi cha nó một lần đi, chứ lắc nhắc chỉnh sửa mệt lắm, cái nào giải quyết được thì làm không thì chịu.
 
Upvote 0
Hỏi cha nó một lần đi, chứ lắc nhắc chỉnh sửa mệt lắm, cái nào giải quyết được thì làm không thì chịu.
Căn bản là nó không thuộc vào chủ để này nữa nên em không hỏi trong này được anh ạ.
À, e mới nảy ra thêm một ý. Đó là anh tăng thêm khả năng bảo mật bằng cách không cho save as khi mở file ở chế độ read-only được không ạ. Em có đọc một bài trên diễn đàn nhưng down file về thực hiện thì thấy vẫn lỗi, không tự động ngăn save as được mà phai enable lên.
Bên cạnh đó thêm cái code tự động backup dữ liệu nữa thì tốt nhất. Em đọc và có làm được rồi nhưng với folder đã được tạo trước. Còn nếu với folder chưa có thì e vẫn chưa làm được để creat folder.
 
Upvote 0
Căn bản là nó không thuộc vào chủ để này nữa nên em không hỏi trong này được anh ạ.
À, e mới nảy ra thêm một ý. Đó là anh tăng thêm khả năng bảo mật bằng cách không cho save as khi mở file ở chế độ read-only được không ạ. Em có đọc một bài trên diễn đàn nhưng down file về thực hiện thì thấy vẫn lỗi, không tự động ngăn save as được mà phai enable lên.
Bên cạnh đó thêm cái code tự động backup dữ liệu nữa thì tốt nhất. Em đọc và có làm được rồi nhưng với folder đã được tạo trước. Còn nếu với folder chưa có thì e vẫn chưa làm được để creat folder.
Chỉ có đọc thì làm sao chạy macro mà ngăn chặn việc Save As?

Tôi mà mở không được tôi chẳng làm gì hết, xóa luôn cái file, biết ai xóa đâu mà bắt đền +-+-+-++-+-+-++-+-+-+
 
Upvote 0
Chỉ có đọc thì làm sao chạy macro mà ngăn chặn việc Save As?

Tôi mà mở không được tôi chẳng làm gì hết, xóa luôn cái file, biết ai xóa đâu mà bắt đền +-+-+-++-+-+-++-+-+-+
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.
 
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.
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.
 
Upvote 0
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
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: 109
  • TrangChinh.jpg
    TrangChinh.jpg
    49.5 KB · Đọc: 110
  • Setting.jpg
    Setting.jpg
    36.2 KB · Đọc: 107
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

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
Nhiều khi nó đăng nhập rất lâu mặc dù chưa có dữ liệu....tại sao nhỉ?
 
Upvote 0
Mình tải về chạy không được bạn ạ
Mình ko up được hình nên nó báo compile error in hidden module: UsfUser
Bạn biết lỗi này ko
 

File đính kèm

  • loi.jpg
    loi.jpg
    50.1 KB · Đọc: 128
Upvote 0
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
Cao thủ ơi nhờ xem lại đoạn code này có gì đó không ổn,
thiếu Sheets(strSheetNameAlt).Visible = xlSheetVisible
nên không select được
Nếu thêm vào thì User cũng mở được của Admin
 
Upvote 0
Sub SheetSelect()
On Error Resume Next
Dim strSheetName As String, strSheetNameAlt As String, strQuyenSuDung As String
strSheetName = pubUserAndSheet(0)
strQuyenSuDung = pubUserAndSheet(1)
strSheetNameAlt = ActiveSheet.Shapes(Application.Caller).AlternativeText
Call StructureLock(False)
HOME.Visible = xlSheetVisible
Select Case strSheetNameAlt
Case "HOME"
If ActiveSheet.CodeName = "HOME" Then
strSheetNameAlt = strSheetName
Else
strSheetNameAlt = HOME.Name
End If
Case "ADMIN"
If strQuyenSuDung = "ADMIN" Then
ADMIN.Visible = xlSheetVisible
strSheetNameAlt = ADMIN.Name
End If
Case "ADMIN_SETTING"
If strQuyenSuDung = "ADMIN" Then
ADMIN_SETTING.Visible = xlSheetVisible
strSheetNameAlt = ADMIN_SETTING.Name
End If
Case Else
If strQuyenSuDung = "ADMIN" Or strSheetName = strSheetNameAlt Then
Sheets(strSheetNameAlt).Visible = xlSheetVisible
End If
End Select
Sheets(strSheetNameAlt).Select
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 1
If Err.Number Then
Err.Clear
MsgBox "Ban khong co quyen truy cap vao day!", vbCritical, "Thông Báo"
End If
Call StructureLock(True)
End Sub
 
Upvote 0
Cảm ơn bác nhiều vì sự cống hiến.
Làm phiền bác có thể tách riêng cho em đoạn code chỉ lấy mỗi cái màn hình đăng nhập được không? Em chỉ cần cái đó thôi cơ mà không biết về VBA.
 
Upvote 0
Tôi bị lỗi, tải lại cũng vẫn bị. Xóa đi không xóa được. (hình đính kèm)
 

File đính kèm

  • Untitled1.jpg
    Untitled1.jpg
    91.7 KB · Đọc: 53
Upvote 0
cho mình xin file đó đi:
mail là:huonghoangvan920@gmail.com
 
Upvote 0
Anh Nghĩa vào xem bài này để tạo lại giao diện đăng nhập nhìn sẽ Pro hơn nè.
http://www.giaiphapexcel.com/forum/...cách-tạo-Form-có-hình-dạng-bất-kỳ-(Skin-Form)
Cái vụ này chỉ là file đăng nhập và quyền truy cập, nên mức độ "cao cấp" chưa thật cần thiết. Vả lại, nguyên tắc của cái Skin Form mà bạn đưa lên nó cũng chỉ là cho transparent (làm trong suốt) cái form và chỉ cho hiển thị cái picture, song code đó chạy chậm quá, thậm chí phát sinh ra lỗi nên tôi không thể áp dụng cho những trường hợp đơn giản. Nhưng sẽ nghiên cứu và làm tăng tốc cũng như tính ứng dụng của nó ở những lần sau.
 
Upvote 0
Cũng thông tin thêm, nhân dịp 10 năm diễn đàn GPE, tôi sẽ viết một file tương đối đơn giản nhưng các bạn sẽ dễ dùng cho mục đích của các bạn hơn.

Please wait ...;;;;;;;;;;;
 
Upvote 0
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é.

Chào anh, em muốn nó hiện lên tất cả các sheet ẩn và khi nhập mật khẩu để Unprotect thì nó không tự động khóa nữa được không anh, vì hiện tại em mở xong qua sheet khác nó lại khóa phải nhập mat khẩu nữa mới được.
 
Upvote 0
Chào anh, em muốn nó hiện lên tất cả các sheet ẩn và khi nhập mật khẩu để Unprotect thì nó không tự động khóa nữa được không anh, vì hiện tại em mở xong qua sheet khác nó lại khóa phải nhập mat khẩu nữa mới được.

Chào anh, em muốn khi nhập mật khẩu để Unprotect thì nó không tự động khóa nữa được không anh, vì hiện tại em mở xong qua sheet khác nó lại khóa phải nhập mat khẩu số 1 nữa mới được. Hơi bất tiện
Chỉnh code như thế nào nhờ anh hướng dẫn giúp em nhe
 
Upvote 0
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


Chào anh Nghĩa
, Nhu file của anh em muốn gỡ pass "HoangTrongNghia" thi sheet đó sẽ không tự động khóa nữa được không anh vì khi thao tác ti lại bắt nhập lại pass mới Unprotect Sheet
 
Upvote 0
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
a ơi e dùng win 64 bit k mở đc, a có thể fix lại và gửi cho e xin vào mail: hieubv68@gmail.com. em cảm ơn
 
Upvote 0
Thật ra HOME là một sheet luôn luôn không ẩn, vì ngoại trừ AdIns thì các file bình thường khác phải để ít nhất 1 sheet, Excel không cho ẩn hết (và đương nhiên, sheet này hiện lên vô thưởng vô phạt, đâu có mất dữ liệu gì đâu mà lo).

Bạn muốn làm gì trên đó cũng được thiết kế sao cũng được, chẳng quan tâm, vì tôi không làm gì với sheet này cả mà chỉ để mấy cái shape điều khiển, bạn có thể di dời hay làm gì cũng được.
a nghĩa ơi, rc hết cảm ơn a về file này nhé. Nhưng cho e hỏi chút là: nếu như e tao ra 5 sheet mà trong đó 1 sheet sẽ lấy các dữ liệu của 4 sheet còn lại thì làm thế nào a vì các sheet bị ẩn hết rồi nên e muốn vlookup cũng k đc. MOng a giúp! e cảm ơn a
 
Upvote 0
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é.
Chào anh như file rất gọn nhưng khi xử lý số liệu ví dụ như pivot thì bắt phải mở Unprotect, anh chỉnh bỏ tắt chế độ này và cần khóa sheet nào thì sẽ khóa thủ công được không anh?
Em cám ơn
 
Upvote 0

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

Back
Top Bottom