Dùng VBA phân quyền với file excel (1 người xem)

Liên hệ QC

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

uronmapu

Thành viên thường trực
Tham gia
9/6/10
Bài viết
361
Được thích
15
Chào cả nhà, mình đang có 1 vấn đề chưa biết giải quyết thế nào mong mọi người giúp

Bác nào biết cách share 2 sheet khác nhau trong 1 file excel cho 2 user khác nhau với yêu cầu như bên dưới ko:

Mình có 1 file excel có 2 sheet 1 và 2, đã tạo 1 folder XYZ và share cho 2 User A và User B truy cập

Mình muốn A chỉ chỉnh sửa được trong sheet1, không được chỉnh sửa sheet2 (read only)

B thì không chỉnh sửa được sheet1 (read only), mà chỉnh sửa được sheet2

Liệu có thể làm 1 nút đăng nhập vào ko các bác nhỉ

Tạo 1 nút đăng nhập, tạo 2 user: user1 và user2

Nếu đăng nhập vào là user1 thì có thể chỉnh sửa sheet 1, chỉ xem được sheet2
Nếu đăng nhập vào là user2 thì có thể chỉnh sửa sheet 2, chỉ xem được sheet1

Nếu là admin thì toàn quyên

Bác nào có thể giúp ý tưởng của e được ko ạ

Em cảm ơn
 
Mọi người xem file đính kèm của e và tư vấn giúp e

Pass đăng nhập admin/admin
 

File đính kèm

Upvote 0
Nếu muốn đề phòng vô tình làm sai dữ liệu thì chức năng sheet protect đã đủ rồi. Còn đối với người muốn phá thì vô phương cứu chữa. Hay là quên cái vụ bảo mật trong excel đi. Trên mạng code để phá sheet protect và VBA protect nhiều lắm
 
Upvote 0
Vâng, e cũng biết là phá sheet protect đơn giản :(
Nhưng trường hợp của e đây là người gà mờ, quá gà mờ ko biết gì luôn ạ

Các bác xem file đính kèm của e và giúp e chút xíu được ko?

Em không muốn dùng chức năng protect vì khi user1 unprotect sheet1 thì user2 lúc đò tình cờ click sang sheet1 và chỉnh sửa
 
Upvote 0
Vậy thì bạn thử làm theo cái này (mấy cái vụ protect sheet này không khả thi veè vấn đề bảo mật đâu)
 

File đính kèm

Upvote 0
Nếu thế thì tại sao mình không dùng sự kiện SheetDeactive để khoá sheet khi chọn vào sheet khác, khi nào quay lại sheet thì phải nhập pass cho sheet như ban đầu
 
Upvote 0
Vậy thì bạn thử làm theo cái này (mấy cái vụ protect sheet này không khả thi veè vấn đề bảo mật đâu)
Cái này e tìm được rồi ạ

Nếu thế thì tại sao mình không dùng sự kiện SheetDeactive để khoá sheet khi chọn vào sheet khác, khi nào quay lại sheet thì phải nhập pass cho sheet như ban đầu

Em cũng ko biết nhiều về excel, SheetDeactive là thế nào ạ?
Có phải là dòng lệnh như: Sheet2.Activate ko ạ

Còn ẩn sheet thì lệnh: Sheet1.Visible = xlSheetVeryHidden

Xin hỏi thêm code chỉ cho read only sheet thì làm thế nào ạ

Mong bác chỉ bảo thêm (e vẫn muốn làm theo cái kiểu logon ạ như file đính kèm của e bên dưới)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Nếu vậy thì làm đơn giản thế này thôi Pass là 12345
 

File đính kèm

Upvote 0
Không đúng ý của e rồi bác ơi, vì e muốn 2 người cùng mở 1 file excel này (file excel có 2 sheet 1 và 2)

User1 vào thì chỉnh sửa được ngay sheet1, ko chỉnh sửa được sheet2 mà chỉ xem thôi
User2 vào thì chỉnh sửa được ngay sheet2, ko chỉnh sửa được sheét mà chỉ xem thôi
User admin thì full quyền

Bác xem file đính kèm của e bên trên giúp e
E đã giải quyết được đa phần rồi, chỉ vướng ở chỗ giờ đang cần 1 đoạn code bằng vba để readonly 1 sheet
Bác nào biết code readonly sheet bằng vba xin cho e với ạ

Cảm ơn
 
Upvote 0
thì code này là read only của sheet rồi còn gì

Sheets("sheet1").Protect là bảo vê không cần pass

Sheets("sheet1").Protect 12345 là bảo vệ có pass
 
Upvote 0
À, thế thì đúng rồi ạ,

Em cảm ơn bác

Em đã làm xong với đoạn code như sau, chia sẻ cùng mọi người

Mã:
Private Sub cmdOk_Click()
Dim a As String, b As String, c As String, d As String, e As String, f As String
a = Sheet1.Cells(1, 2).Value
b = Sheet1.Cells(2, 2).Value
c = Sheet1.Cells(1, 3).Value
d = Sheet1.Cells(2, 3).Value
e = Sheet1.Cells(1, 4).Value
f = Sheet1.Cells(2, 4).Value
    If TextBox1 = a And TextBox2 = b Then
        Unload Me
        Application.Visible = True
            ElseIf TextBox1 = c And TextBox2 = d Then
                Unload Me
                Sheet2.Activate
                Application.Visible = True
                Sheet1.Visible = xlSheetVeryHidden
                Sheets("sheet2").Protect
            ElseIf TextBox1 = e And TextBox2 = f Then
                         Unload Me
                         Sheet3.Activate
                         Application.Visible = True
                         Sheet1.Visible = xlSheetVeryHidden
    Else
        MsgBox "Ban da nhap sai. Hay nhap lai nhe!", vbCritical + vbOKOnly
        cmdOk.SetFocus
        'cmdHuy_Click
    End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
dùng SheetDeactive trên excel 2013 như nào anh quanghai1969 ơ trỉ e với!e cảm ơn anh nhiều
 
Upvote 0
Web KT

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

Back
Top Bottom