Tạo form đăng nhập trong Excel (1 người xem)

Liên hệ QC

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

truongminhthi999

Thành viên mới
Tham gia
10/5/11
Bài viết
27
Được thích
2
Giới tính
Nam
Chào các bạn! Mình có làm một bài Excel tạo form đăng nhập nhưng mình chưa tạo được form thay đổi thông tin đăng nhập khi đăng nhập đúng. Do đó, khi muốn thay đổi phải mở Vba lên để mà thay đổi trong đó. Rất là phiền phức. Bạn nào biết thì chỉ dùm nhe. Tải file đính kèm xem thử nhe!
Xin cám ơn.
Liên lạc với mình qua truongminhthi999@gmail.com
 

File đính kèm

Bác Nghĩa chưa hiểu ý em rồi :wounded1:, chẳng là em muốn tận dụng luôn file này của bác nhưng lại tích hợp đoạn code định thời gian hết hạn và chống copy thêm vào file này của bác thì insert nó vào vị trí nào?

VD muốn thêm code này thì insert vào chỗ nào?

Private Sub Workbook_Open()
If
Date >= DateSerial(2010, 6, 20) Then
MsgBox
"Het han su dung"
Call KillFile 'Hoac thay bang Application.Quit
End
If
End Sub
Nếu vậy thì sự kiện Open được thêm vào như sau:

Mã:
Private Sub Workbook_Open()
    On Error Resume Next
[COLOR=#0000ff]    If Date >= DateSerial(2010, 6, 20) Then[/COLOR]
[COLOR=#0000ff]        MsgBox "Het han su dung"[/COLOR]
[COLOR=#0000ff]        Call KillFile 'Hoac thay bang Application.Quit[/COLOR]
[COLOR=#0000ff]    Else[/COLOR]
        Call StructureUnLock
        With Home
            .Select
            .cmdAdmin.Enabled = False
            .cmdUser1.Enabled = False
            .cmdUser2.Enabled = False
            .cmdUser3.Enabled = False
        End With
        Application.ScreenUpdating = False
        Dim sh As Worksheet
        For Each sh In ThisWorkbook.Worksheets
            If sh.CodeName <> "Home" Then
                sh.Visible = xlSheetVeryHidden
            End If
        Next
        UsfUser.Show
[COLOR=#0000ff]    End If[/COLOR]
End Sub
 
Upvote 0
Nếu vậy thì sự kiện Open được thêm vào như sau:

Mã:
Private Sub Workbook_Open()
    On Error Resume Next
[COLOR=#0000ff]    If Date >= DateSerial(2010, 6, 20) Then[/COLOR]
[COLOR=#0000ff]        MsgBox "Het han su dung"[/COLOR]
[COLOR=#0000ff]        Call KillFile 'Hoac thay bang Application.Quit[/COLOR]
[COLOR=#0000ff]    Else[/COLOR]
        Call StructureUnLock
        With Home
            .Select
            .cmdAdmin.Enabled = False
            .cmdUser1.Enabled = False
            .cmdUser2.Enabled = False
            .cmdUser3.Enabled = False
        End With
        Application.ScreenUpdating = False
        Dim sh As Worksheet
        For Each sh In ThisWorkbook.Worksheets
            If sh.CodeName <> "Home" Then
                sh.Visible = xlSheetVeryHidden
            End If
        Next
        UsfUser.Show
[COLOR=#0000ff]    End If[/COLOR]
End Sub

Nếu thêm tiếp nữa vào đoạn code trên điều kiện kiểm tra nếu đúng mã máy thì cho mở file thì như thế nào ạ. Bác Nghĩa chỉ em với !!!
 
Upvote 0
Nếu thêm tiếp nữa vào đoạn code trên điều kiện kiểm tra nếu đúng mã máy thì cho mở file thì như thế nào ạ. Bác Nghĩa chỉ em với !!!

Trong file đó, bạn tạo thêm 1 module (tôi gọi là ModuleSeries) và chép vào hàm này:

Mã:
Function ReadSeriesNumber()
    With CreateObject("Scripting.FileSystemObject")
        With .GetDrive(Environ("SystemDrive"))
            If .IsReady Then
                ReadSeriesNumber = Abs(.Serialnumber)
            Else
                ReadSeriesNumber = -1
            End If
        End With
    End With
End Function


Sau đó dùng hàm đó để kiểm tra máy của bạn có Series là bao nhiêu.

dùng thủ tục này để kiểm tra:

Mã:
Sub test()
    Debug.Print ReadSeriesNumber
End Sub

Sau khi có số series, bạn đặt câu màu đỏ này lên trên cùng của ModuleSeries


Public Const YourSeries As Long = 1964788159 '<<< Số series của máy tính bạn thay cho số này.

Bây giờ, code của sự kiện Open sẽ như sau:

Mã:
Private Sub Workbook_Open()
    On Error Resume Next
    If Date >= DateSerial(2010, 6, 20) Then
        MsgBox "Het han su dung"
        Call KillFile 'Hoac thay bang Application.Quit
[COLOR=#0000ff]    ElseIf [/COLOR][COLOR=#ff0000]ReadSeriesNumber <> YourSeries[/COLOR][COLOR=#0000ff] Then[/COLOR]
[COLOR=#0000ff]        MsgBox "May nay khong duoc quyen su dung"[/COLOR]
[COLOR=#0000ff]        Call KillFile 'Hoac thay bang Application.Quit[/COLOR]
    Else
        Call StructureUnLock
        With Home
            .Select
            .cmdAdmin.Enabled = False
            .cmdUser1.Enabled = False
            .cmdUser2.Enabled = False
            .cmdUser3.Enabled = False
        End With
        Application.ScreenUpdating = False
        Dim sh As Worksheet
        For Each sh In ThisWorkbook.Worksheets
            If sh.CodeName <> "Home" Then
                sh.Visible = xlSheetVeryHidden
            End If
        Next
        UsfUser.Show
    End If
End Sub
 
Upvote 0
Trong file đó, bạn tạo thêm 1 module (tôi gọi là ModuleSeries) và chép vào hàm này:

Mã:
Function ReadSeriesNumber()
    With CreateObject("Scripting.FileSystemObject")
        With .GetDrive(Environ("SystemDrive"))
            If .IsReady Then
                ReadSeriesNumber = Abs(.Serialnumber)
            Else
                ReadSeriesNumber = -1
            End If
        End With
    End With
End Function


Sau đó dùng hàm đó để kiểm tra máy của bạn có Series là bao nhiêu.

dùng thủ tục này để kiểm tra:

Mã:
Sub test()
    Debug.Print ReadSeriesNumber
End Sub

Sau khi có số series, bạn đặt câu màu đỏ này lên trên cùng của ModuleSeries


Public Const YourSeries As Long = 1964788159 '<<< Số series của máy tính bạn thay cho số này.

Bây giờ, code của sự kiện Open sẽ như sau:

Mã:
Private Sub Workbook_Open()
    On Error Resume Next
    If Date >= DateSerial(2010, 6, 20) Then
        MsgBox "Het han su dung"
        Call KillFile 'Hoac thay bang Application.Quit
[COLOR=#0000ff]    ElseIf [/COLOR][COLOR=#ff0000]ReadSeriesNumber <> YourSeries[/COLOR][COLOR=#0000ff] Then[/COLOR]
[COLOR=#0000ff]        MsgBox "May nay khong duoc quyen su dung"[/COLOR]
[COLOR=#0000ff]        Call KillFile 'Hoac thay bang Application.Quit[/COLOR]
    Else
        Call StructureUnLock
        With Home
            .Select
            .cmdAdmin.Enabled = False
            .cmdUser1.Enabled = False
            .cmdUser2.Enabled = False
            .cmdUser3.Enabled = False
        End With
        Application.ScreenUpdating = False
        Dim sh As Worksheet
        For Each sh In ThisWorkbook.Worksheets
            If sh.CodeName <> "Home" Then
                sh.Visible = xlSheetVeryHidden
            End If
        Next
        UsfUser.Show
    End If
End Sub
Hix, em đã xem 1 hồi lâu nhưng cũng không hiểu gì được cả... Anh nghĩa có thể cho em xin file kèm bài trên được không ạ?
 
Upvote 0
Hix, em đã xem 1 hồi lâu nhưng cũng không hiểu gì được cả... Anh nghĩa có thể cho em xin file kèm bài trên được không ạ?
Đơn giản là như vầy, tạo một module rồi chép thủ tục dưới đây vào trong đó:

Mã:
Option Explicit
[COLOR=#ff0000]Public Const MyComputerSeries = 1964788159[/COLOR]

Function ReadSeriesNumber()
    With CreateObject("Scripting.FileSystemObject")
        With .GetDrive(Environ("SystemDrive"))
            If .IsReady Then
                ReadSeriesNumber = Abs(.Serialnumber)
            Else
                ReadSeriesNumber = -1
            End If
        End With
    End With
End Function


[COLOR=#0000ff]''Thu tuc nay de ban lay so series cua may tinh[/COLOR]
[COLOR=#0000ff]''Mo Immediate (Ctrl+G) de xem so[/COLOR]
[COLOR=#0000ff]''sau do copy so do vao [/COLOR][COLOR=#ff0000]Const MyComputerSeries[/COLOR]
[COLOR=#0000ff]''o phia tren thay cho day so [/COLOR][COLOR=#ff0000]1964788159[/COLOR]
Sub KiemTraSeries()
    Debug.Print ReadSeriesNumber
End Sub

Chép trong ThisWorkbook thủ tục của sự kiện Open:

Mã:
Private Sub Workbook_Open()
    On Error Resume Next
    [COLOR=#0000ff]''Thoi han su dung:[/COLOR]
    If Date > DateSerial(2014, 3, 12) Then
        MsgBox "Het han su dung"
        GoTo ExitSub
    [COLOR=#0000ff]''Kiem tra so series, neu dung may minh moi cho mo file:[/COLOR]
    ElseIf ReadSeriesNumber <> MyComputerSeries Then
        MsgBox "May nay khong duoc quyen su dung"
        GoTo ExitSub
    Else
        MsgBox "Ban da xem duoc file!"
    End If
    Exit Sub
ExitSub:
    If Workbooks.Count = 1 Then
        Application.Quit
    Else
        ThisWorkbook.Close False
    End If
End Sub
 

File đính kèm

Upvote 0
Anh Nghĩa cho em hỏi, em đã tải bài # 26 của anh về và muốn vận dụng vào file của em thì phải làm sao hả anh Nghĩa. (Tức là em muốn lấy cái Form của Anh để làm Pass mở file của em Ah.)
 
Upvote 0
Anh Nghĩa cho em hỏi, em đã tải bài # 26 của anh về và muốn vận dụng vào file của em thì phải làm sao hả anh Nghĩa. (Tức là em muốn lấy cái Form của Anh để làm Pass mở file của em Ah.)
Bạn đưa cái file của bạn lên đây đi, tôi "vận dụng" dùm cho, chứ không có file thì tôi cũng như "Thầy bói xem voi" thôi.

Cũng lưu ý là khi gửi file lên, bạn ghi rõ yêu cầu của bạn như thế nào để tôi dễ dàng nắm bắt và thực hiện cho bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Em đưa File cho Anh Nghĩa đây Ah. Anh Nghĩa có thể giúp cho em có form Pass để mở file(Anh chỉnh cho form to ra thêm một tí) và Anh có thể tạo code không cho ai xóa được file này (ổ D) Mong Anh giúp đỡ!!!!
 

File đính kèm

Upvote 0
Sory Anh Nghĩa,Em đưa lộn file có pass VBA. vì lý do công việc em xóa bớt 1 số Module và tên hàng , đơn hàng. Mong Anh giúp đỡ!!!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em đưa File cho Anh Nghĩa đây Ah. Anh Nghĩa có thể giúp cho em có form Pass để mở file(Anh chỉnh cho form to ra thêm một tí) và Anh có thể tạo code không cho ai xóa được file này (ổ D) Mong Anh giúp đỡ!!!!

Lưu ý nha bạn, lần sau có gửi file lên thì cũng phải bỏ VBA Password ra cho người khác còn giúp bạn nữa nha!

Ngoài việc đưa Form đăng nhập vào, tôi còn thấy trong ThisWorkbook Module, bạn có thủ tục này:

Mã:
Private Sub Workbook_Open()
    On Error Resume Next
    Application.ScreenUpdating = False
    ThisWorkbook.Application.Caption = ("Chuong trinh Nhap Xuat Ton")
    With Application
        .StatusBar = ("Written by Do Minh Quang - Ban quyen thuoc ve tac gia")
 Application.ScreenUpdating = True
 End With
End Sub

Khi bạn mở file, sự kiện này kích hoạt, thế là tất cả các file Excel đang mở chịu sự tác động của nó nên Caption và StatusBar đều có 2 dòng chuỗi đó hiện lên, cho dù không phải chương trình đó hiện hành (activate). Cho nên tôi sửa lại cho bạn bằng 2 thủ tục này, khi file của bạn hiện hành thì chúng hiện lên, khi qua file khác thì mất đi:

Mã:
Private Sub Workbook_Activate()
    On Error Resume Next
    Application.Caption = "Chuong trinh Nhap Xuat Ton"
    Application.StatusBar = "Written by Do Minh Quang - Ban quyen thuoc ve tac gia"
End Sub


Private Sub Workbook_Deactivate()
    On Error Resume Next
    Application.Caption = ""
    Application.StatusBar = ""
End Sub

À, việc không cho xóa tôi không thực hiện được nha!
 

File đính kèm

Upvote 0
Xin lỗi Anh Nghĩa nhe!!!Thực chất là em cũng sưu tầm file này trên DD, vì trình độ VBA gà mờ, nên em thêm chổ này bỏ chổ kia một tí cho phù hợp với công việc của em. Em chả viết được đến 1/2 đoạn code nào cả. Đúng là khi mở file này lên là tất cả các file excell khác đều có chuỗi đó hiện lên.Cám ơn Anh nhiều!!!
 
Upvote 0
Chào bác Hoàng Trọng Nghĩa!Bác cho em hỏi:Có cách nào để ghi lại nhật ký làm việc của từng User trong 1 File Excel ko ạ.Ví dụ như mình muốn biết trong phiên đăng nhập của 1 user,người đó đã làm gì,đã chỉnh sửa thông tin ra sao,thêm bớt số liệu như thế nào.Nhật ký tất nhiên chỉ có admin mới có quyền xem dc ạ.
Em xin cảm ơn!
 
Upvote 0
sao mình dùng office 2013 64bit (win 8.1 64 bit) để mở file thì bị báo lỗi:
"Could not load some objects because they are not avaiable on this machine"
Khi vào VBA thì báo lỗi:
"The code in this projects must be updated for use on 64-bit system. Please review and update Declare statements and then mark them with the PtrSafe attribute"
ở 2 dòng sau:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long


Sau khi sửa lại thành:
#If VBA7 Then
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPtr
#Else
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
#End If
#If VBA7 Then
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, _
ByVal nIndex As LongPtr, ByVal dwNewLong As LongPtr) As LongPtr
#Else
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
#End If

thì lại bị báo lỗi:'
"Type mismatch"
ở dòng:
hwnd = FindWindow("ThunderDFrame", Me.Caption)

không biết phải sửa lại ntn???
 
Upvote 0
sao mình dùng office 2013 64bit (win 8.1 64 bit) để mở file thì bị báo lỗi:
"Could not load some objects because they are not avaiable on this machine"
Khi vào VBA thì báo lỗi:
"The code in this projects must be updated for use on 64-bit system. Please review and update Declare statements and then mark them with the PtrSafe attribute"
ở 2 dòng sau:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long


Sau khi sửa lại thành:
#If VBA7 Then
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPtr
#Else
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
#End If
#If VBA7 Then
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, _
ByVal nIndex As LongPtr, ByVal dwNewLong As LongPtr) As LongPtr
#Else
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
#End If

thì lại bị báo lỗi:'
"Type mismatch"
ở dòng:
hwnd = FindWindow("ThunderDFrame", Me.Caption)

không biết phải sửa lại ntn???

Đã tìm ra nguyên nhân. Thanks.
Phải khai báo lại biến hwnd như sau:
#If VBA7 Then
Dim hwnd As LongPtr
#Else
Dim hwnd As Long
#End If
 
Upvote 0
file đăng nhập của anh Hoàng Trọng hay ở chỗ không bật "Enable macro" vẫn chạy phần đăng nhập .
Nhưng sao sử dụng thì hay bị lỗi không save được và tiếp theo bị crash luôn . Có lúc đang mở file mà không làm gì thì nó cũng bị crash , bó tay luôn , không biết có phải do em bỏ hết delete hết sheet chỉ chừa lại sheet "Nguon" và UsfUser nên bị như thế
 
Upvote 0
Đây là file "Demo" cho bạn dùng thử chơi cho vui nè! Mọi password đều là HoangTrongNghia.

Trong file tôi có 4 người được dùng, với Admin là cao nhất, sử dụng được mọi thứ, kể cả reset lại tất cả user & pass (thủ công, nếu muốn tự động, tự các bạn mày mò đi nhé, không khó); và 3 User, chỉ được quyền mở sheet của mình.

[NOTE1]Các Username / Password:

1) ADMIN / Admin

2) USER1 / User1

3) USER2 / User2

4) USER3 / User3[/NOTE1]

Các bạn cứ lần lượt mở file rồi chọn thử từng Username xem sao (mở và đóng 4 lần), nên chọn lần cuối là Admin cho thú vị!

[TIP]Click vào Box Username để xổ ra danh sách Users nha các bạn

attachment.php
[/TIP]



File đã được cập nhật mới, sửa lỗi đăng nhập, các bạn nên tải file AdminAndUsers2.rar nhé!

Bác Nghĩa có thể cho mình hỏi làm sao cải thiện thời gian đăng nhập vào nhanh hơn được hay không?

Và muốn hỏi anh cách tạo user cho file với các tiêu chí sau:
1. User Admin: Có quyền full toàn bộ trên file
2. User Người A: Chỉ được phép nhập tại các sheet xxx,
3. User Người B: Chỉ được thao tác tại vùng A5:E10 và G5:L5 của sheet xxx và được xem các sheet a, b, c...
4. User Người C: Chỉ được xem sheet xxx.

Với xxx ở đây là 1 sheet do mình chỉ định.
Có thể tạo được nhiều user cho ng A, ng B... (Mỗi loại vài user)

Cảm ơn và mong sớm nhận được phản hồi của anh.
 
Upvote 0
mọi người ơi sao t cũng làm theo bài GPEV sang file khác mà khi mở excel lên nó ko hiện form đăng nhập pass Word là sao ạ...các form làm xong hết rồi..giờ chỉ cần làm ntn để khi tắt excel lên nó chi hiện form đăng nhập để đăng nhập vậy mọi người...chỉ giúp mình với...cảm ơn nhé%#^#$:-=}}}}}
 
Upvote 0
Kính gửi Anh Nghĩa
Theo tham khảo từ file của anh, em đã tạo được đăng nhập riêng.
Tuy nhiên file của em có nhiều sheet riêng lẻ, và em muốn một người đăng nhập vào có thể vào một số sheet cố định ( ý của em cũng giống của tiennam
user-offline.png
là:Cách tạo User cho file với tiêu chí:
1. User Admin: Có quyền đăng nhập tất cả các sheet
2. User Người A: Dăng nhập vào sheet A, Sheet C
3. User Người B: Đăng nhập sheetB, Sheet D

Như vây có thể tạo user đang nhập cho 1 người ( VD Người A:) đăng nhập vào Sheet A, Sheet C mà các sheet nay vẫn hiện trên sheet Home như user Admin.
Anh Nghĩa vui lòng giúp đỡ để em có thể tìm ra hướng viết tiếp chương trình
Cảm ơn anh Nghĩa nhiều
 
Upvote 0
Kính gửi anh ndu96081631 qua tìm hiểu nhiều bài viết của anh, em thấy anh rất rành về code

Hiện nay em đang dựa trên bài viết và file của anh HoangTrongNghia để làm form đăng nhập
Mục đích chỉ để phân quyền vào các sheet cụ thể cho từng người
Tuy nhiên theo cách đăng nhập của anh HoangTrongNghia thì 1 người chỉ đăng nhập vào 1 sheet mà thôi ( Ngoại trừ Admin)
Anh vui long chỉnh giúp em code để :
1. User Admin: Có quyền đăng nhập tất cả các sheet
2. User Người A: Dăng nhập vào sheet A, Sheet C
3. User Người B: Đăng nhập sheetB, Sheet D

Như vây có thể tạo user đang nhập cho 1 người ( VD Người A:) đăng nhập vào Sheet A, Sheet C mà các sheet nay vẫn hiện trên sheet Home như user Admin.
Anh ndu96081631 và các anh chi trong diễn đàn vui lòng giúp đỡ để em có thể tìm ra hướng viết tiếp chương trình




CODE CỦA EM ĐƯỢC TRÍCH DẪN TỪ BÀI VIẾT CỦA ANH HOANGTRONGNGHIA

quote_icon.png
Nguyên văn bởi Hoàng Trọng Nghĩa

Đây là file "Demo" cho bạn dùng thử chơi cho vui nè! Mọi password đều là HoangTrongNghia.

Trong file tôi có 4 người được dùng, với Admin là cao nhất, sử dụng được mọi thứ, kể cả reset lại tất cả user & pass (thủ công, nếu muốn tự động, tự các bạn mày mò đi nhé, không khó); và 3 User, chỉ được quyền mở sheet của mình.

Chú ý: Các Username / Password:

1) ADMIN / Admin

2) USER1 / User1

3) USER2 / User2

4) USER3 / User3




Các bạn cứ lần lượt mở file rồi chọn thử từng Username xem sao (mở và đóng 4 lần), nên chọn lần cuối là Admin cho thú vị!

Tips: Click vào Box Username để xổ ra danh sách Users nha các bạn

attachment.php






File đã được cập nhật mới, sửa lỗi đăng nhập, các bạn nên tải file AdminAndUsers2.rar nhé!


 
Upvote 0
Kính gửi anh ndu96081631 qua tìm hiểu nhiều bài viết của anh, em thấy anh rất rành về code

Hiện nay em đang dựa trên bài viết và file của anh HoangTrongNghia để làm form đăng nhập
Mục đích chỉ để phân quyền vào các sheet cụ thể cho từng người
Tuy nhiên theo cách đăng nhập của anh HoangTrongNghia thì 1 người chỉ đăng nhập vào 1 sheet mà thôi ( Ngoại trừ Admin)
Anh vui long chỉnh giúp em code để :
1. User Admin: Có quyền đăng nhập tất cả các sheet
2. User Người A: Dăng nhập vào sheet A, Sheet C
3. User Người B: Đăng nhập sheetB, Sheet D

Như vây có thể tạo user đang nhập cho 1 người ( VD Người A:) đăng nhập vào Sheet A, Sheet C mà các sheet nay vẫn hiện trên sheet Home như user Admin.
Anh ndu96081631 và các anh chi trong diễn đàn vui lòng giúp đỡ để em có thể tìm ra hướng viết tiếp chương trình

Chào Bạn,
Bạn có thể tham khảo thêm cách phân quyền trong bài này để tùy biến theo ý mình nhé bạn.
http://www.giaiphapexcel.com/forum/...ản-lý-bán-hàng-bằng-Excel&p=546741#post546741
 
Upvote 0
Cảm ơn ban Kumi đã giúp đỡ nhé
Để minh tham khảo xem có thể áp dung cho minh không
 
Upvote 0
Cac ban oi,
Cũng giống như form trên nhưng mình muốn làm thêm phân quyền từ 2 user trở lên thì như thế nào.
Mong được giúp đở
 
Upvote 0
CHào các bạn,
Theo như file này thì làm sao mình tạo thêm 1 sheet mới, thấy cái nút để click chuột vào bị ẩn đi, không thể tạo thêm sheet mới được.
Xin các bạn chỉ giúp.
Xin cảm ơn.
 
Upvote 0
Đây là file "Demo" cho bạn dùng thử chơi cho vui nè! Mọi password đều là HoangTrongNghia.

Trong file tôi có 4 người được dùng, với Admin là cao nhất, sử dụng được mọi thứ, kể cả reset lại tất cả user & pass (thủ công, nếu muốn tự động, tự các bạn mày mò đi nhé, không khó); và 3 User, chỉ được quyền mở sheet của mình.

[NOTE1]Các Username / Password:

1) ADMIN / Admin

2) USER1 / User1

3) USER2 / User2

4) USER3 / User3[/NOTE1]

Các bạn cứ lần lượt mở file rồi chọn thử từng Username xem sao (mở và đóng 4 lần), nên chọn lần cuối là Admin cho thú vị!

[TIP]Click vào Box Username để xổ ra danh sách Users nha các bạn

attachment.php
[/TIP]



File đã được cập nhật mới, sửa lỗi đăng nhập, các bạn nên tải file AdminAndUsers2.rar nhé!

Anh HoangTrongNghia xem lại giúp em sao với file này của anh khi em đăng nhập bằng user thì được nhưng với Admin thì nó báo lỗi như trong hình.loi khi nhap du lieu va save.jpg
 
Upvote 0
Anh HoangTrongNghia xem lại giúp em sao với file này của anh khi em đăng nhập bằng user thì được nhưng với Admin thì nó báo lỗi như trong hình.
Bạn đã làm như thế nào mà nó bị lỗi? Tôi xem lại file đó đâu có bị lỗi gì đâu?
 
Upvote 0
Anh Hoàng Trọng Nghĩa vui lòng giúp em đem form này vào file của e được ko ạ. Em rất thích nhưng vì mù tịt nên mò nguyên ngày ko làm được. Cái đơn giản nhất là sửa cái button anh khóa mà cũng ko làm được. hic hic
Ở form của anh em thích nhất hai cái. Đó là khi đăng nhập nếu không enable macro thì chỉ hiện sheet home và không tác động gì được đến file, thứ 2 là đăng nhập bằng các user thì chỉ hiện button của user đó ở trang home.
Em thấy mấy anh nói VBA bảo mật chả có gì nhưng với những người như e thì thế thì quá đủ. Nhưng e muốn có một chút thay đổi (nếu có thể) ạ.
- Khi đăng nhập bằng bất cứ user nào thì cũng login vào sheet "trang chu", không cần vào các trang user rồi lại vào trang home nữa, nhưng chỉ admin mới hiện đầy đủ các button còn các user khác chỉ hiện hai button báo cáo thôi.
- Ở 2 sheet báo cáo nhờ a xem giúp em làm sao để user có thể thống kê để in ra chứ ko thể sửa được kết quả.
Mong nhận được sự hỗ trợ của anh.

File của em đây ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
Anh Hoàng Trọng Nghĩa vui lòng giúp em đem form này vào file của e được ko ạ. Em rất thích nhưng vì mù tịt nên mò nguyên ngày ko làm được. Cái đơn giản nhất là sửa cái button anh khóa mà cũng ko làm được. hic hic
Ở form của anh em thích nhất hai cái. Đó là khi đăng nhập nếu không enable macro thì chỉ hiện sheet home và không tác động gì được đến file, thứ 2 là đăng nhập bằng các user thì chỉ hiện button của user đó ở trang home.
Em thấy mấy anh nói VBA bảo mật chả có gì nhưng với những người như e thì thế thì quá đủ. Nhưng e muốn có một chút thay đổi (nếu có thể) ạ.
- Khi đăng nhập bằng bất cứ user nào thì cũng login vào sheet "trang chu", không cần vào các trang user rồi lại vào trang home nữa, nhưng chỉ admin mới hiện đầy đủ các button còn các user khác chỉ hiện hai button báo cáo thôi.
- Ở 2 sheet báo cáo nhờ a xem giúp em làm sao để user có thể thống kê để in ra chứ ko thể sửa được kết quả.
Mong nhận được sự hỗ trợ của anh.

File của em đây ạ.
Hãy chờ một phiên bản mới hoàn toàn đặc biệt! Bạn có thể tạo 1 sheet mới cho một User mới nếu bạn là Admin. Không chờ lâu đâu! Chắc chắn giao diện sẽ tốt hơn.
 
Upvote 0
Hãy chờ một phiên bản mới hoàn toàn đặc biệt! Bạn có thể tạo 1 sheet mới cho một User mới nếu bạn là Admin. Không chờ lâu đâu! Chắc chắn giao diện sẽ tốt hơn.
Em rất hi vọng sẽ sớm được anh giúp cho phiên bản đó vì em đang rất cần ạ. Em cảm ơn anh.
Nhưng nếu với phiên bản cũ này của anh thì với những mong muốn e đưa ra có làm được không ạ. Nếu có thể anh giúp em trước với phiên bản này để e quản lý cái đã vì nếu để thế này những người vận hành sẽ vẫn sửa được dữ liệu và làm thất thoát của bọn em trong quá trình thanh toán. Mong anh giúp.
 
Upvote 0
Em rất hi vọng sẽ sớm được anh giúp cho phiên bản đó vì em đang rất cần ạ. Em cảm ơn anh.
Nhưng nếu với phiên bản cũ này của anh thì với những mong muốn e đưa ra có làm được không ạ. Nếu có thể anh giúp em trước với phiên bản này để e quản lý cái đã vì nếu để thế này những người vận hành sẽ vẫn sửa được dữ liệu và làm thất thoát của bọn em trong quá trình thanh toán. Mong anh giúp.
Đừng có hối, tôi đang làm cho bạn và mọi người cần đến đây. Chậm lắm là ngày mốt tôi sẽ hoàn tất vì tôi phải check đi check lại có lỗi phát sinh hay không.

Dung nhan mùa hạ của nó đây:

attachment.php


Và đây nữa, nó là sheet để tạo tất cả các nút lệnh hồng và cam của user đây:

attachment.php
 

File đính kèm

  • SheetHome.jpg
    SheetHome.jpg
    36.5 KB · Đọc: 271
  • SheetSetting.jpg
    SheetSetting.jpg
    60.7 KB · Đọc: 266
Upvote 0
Đừng có hối, tôi đang làm cho bạn và mọi người cần đến đây. Chậm lắm là ngày mốt tôi sẽ hoàn tất vì tôi phải check đi check lại có lỗi phát sinh hay không.

Dung nhan mùa hạ của nó đây:

attachment.php


Và đây nữa, nó là sheet để tạo tất cả các nút lệnh hồng và cam của user đây:

attachment.php
Đã xong chưa anh ơi. Lâu quá rùi nà
 
Upvote 0
CHào các bạn,
Theo như file này thì làm sao mình tạo thêm 1 sheet mới, thấy cái nút để click chuột vào bị ẩn đi, không thể tạo thêm sheet mới được.
Xin các bạn chỉ giúp.
Xin cảm ơn.
 
Upvote 0
CHào các bạn,
Theo như file này thì làm sao mình tạo thêm 1 sheet mới, thấy cái nút để click chuột vào bị ẩn đi, không thể tạo thêm sheet mới được.
Xin các bạn chỉ giúp.
Xin cảm ơn.

Bạn click vào đường dẫn ở bài này và tham khảo nhé.

 
Upvote 0
Xin chào anh Nghĩa,
Vì em dựa vào cái file củ của anh để áp dụng vào công ty em, nên cũng sử dụng cả năm nay rồi.
Em đọc file mới chưa hiểu rõ cho lắm.
Xin xin anh dành chút thời gian để xem cái file của em và chỉnh sửa dùm em.
* Em muốn tạo thêm cái Box, khi nhắp cái box đó tự động tạo thêm sheet mới , nếu nhắp 2 lần tạo 2 sheet mới, nhắp 1 lần tạo 1 sheet, khi sheet mới được tạo nó hiện ra nhưng mặc định active là sheet chủ "Home".
* Khi mà em save, file hiện thời của em là nhập 2 lần pass mới cho save hay save as ---> xin anh xem giúp dùm em chỉ muốn nhập 1 lần pass thôi là save và nếu gõ sai pass thì sẽ tự động xóa đi pass củ để cho mình nhập pass mới . - xin anh giúp dùm lệnh "Cancel" trong lúc không muốn gõ pass để save.
* lúc mở file này lên cũng vậy, khi nhập pass sai, thì em muốn nó tự động xóa đi để nhập lại pass.

Xin anh dành chút thời gian giúp đỡ.
Xin cảm ơn anh nhiều.
XIn chúc anh vui vẻ 1 ngày mới.

user : admin pass: spiderman
user1 : pass 123
user2 : pass 123
còn tất cả pass còn lại là "spiderman"
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Xin chào anh Nghĩa,
Vì em dựa vào cái file củ của anh để áp dụng vào công ty em, nên cũng sử dụng cả năm nay rồi.
Em đọc file mới chưa hiểu rõ cho lắm.
Xin xin anh dành chút thời gian để xem cái file của em và chỉnh sửa dùm em.
* Em muốn tạo thêm cái Box, khi nhắp cái box đó tự động tạo thêm sheet mới , nếu nhắp 2 lần tạo 2 sheet mới, nhắp 1 lần tạo 1 sheet, khi sheet mới được tạo nó hiện ra nhưng mặc định active là sheet chủ "Home".
* Khi mà em save, file hiện thời của em là nhập 2 lần pass mới cho save hay save as ---> xin anh xem giúp dùm em chỉ muốn nhập 1 lần pass thôi là save và nếu gõ sai pass thì sẽ tự động xóa đi pass củ để cho mình nhập pass mới . - xin anh giúp dùm lệnh "Cancel" trong lúc không muốn gõ pass để save.
* lúc mở file này lên cũng vậy, khi nhập pass sai, thì em muốn nó tự động xóa đi để nhập lại pass.

Xin anh dành chút thời gian giúp đỡ.
Xin cảm ơn anh nhiều.
XIn chúc anh vui vẻ 1 ngày mới.

user : admin pass: spiderman
user1 : pass 123
user2 : pass 123
còn tất cả pass còn lại là "spiderman"
Bạn cho tôi cái mail đi, tôi gửi bạn file này tham khảo, bảo đảm đẹp và tiện ích (file này tôi mới giúp một thành viên) giờ tôi làm biếng làm quá, bạn cố gắng xem file, pass cho workbook và worksheet đều là 1.
 
Upvote 0
Đơn giản là như vầy, tạo một module rồi chép thủ tục dưới đây vào trong đó:
Chép trong ThisWorkbook thủ tục của sự kiện Open:

Mã:
Private Sub Workbook_Open()
    On Error Resume Next
    [COLOR=#0000ff]''Thoi han su dung:[/COLOR]
    If Date > DateSerial([COLOR=#ff0000][SIZE=3][B]2014, 3, 12[/B][/SIZE][/COLOR]) Then
        MsgBox "Het han su dung"
        GoTo ExitSub
    [COLOR=#0000ff]''Kiem tra so series, neu dung may minh moi cho mo file:[/COLOR]
    ElseIf ReadSeriesNumber <> MyComputerSeries Then
        MsgBox "May nay khong duoc quyen su dung"
        GoTo ExitSub
    Else
        MsgBox "Ban da xem duoc file!"
    End If
    Exit Sub
ExitSub:
    If Workbooks.Count = 1 Then
        Application.Quit
    Else
        ThisWorkbook.Close False
    End If
End Sub
Lâu ngày lục lại bài của Bạn nghĩa ôn lại một tí
Dòng Date chữ to màu đỏ giả thiết đến ngày đó người ta vào Control Panel chỉnh lùi lại ngày thì có giải pháp nào khắc phục được không Bạn...
(Điều Kiện Không chỉnh code và Mcros đã Enable)
 
Upvote 0
Lâu ngày lục lại bài của Bạn nghĩa ôn lại một tí
Dòng Date chữ to màu đỏ giả thiết đến ngày đó người ta vào Control Panel chỉnh lùi lại ngày thì có giải pháp nào khắc phục được không Bạn...
(Điều Kiện Không chỉnh code và Mcros đã Enable)
Cái này không chỉ ở Excel mà các phần mềm khác cũng dính chưởng vụ chỉnh ngày giờ hệ thống với các bản Demo.

Thường là người ta so sánh vừa ngày giờ hệ thống, vừa ngày giờ Internet. Nhưng giả thiết đặt ra là không kết nối mạng thì lấy gì so sánh?

Cho nên trong trường hợp như thế thì bó tay toàn tập, hoặc ngoài sức của tôi.
 
Upvote 0
Cho hỏi anh Nghĩa
File Quyendangnhap sau khi tạo ra 9 user thì nó nằm lộn xộn và chồng lên nhau. Mình làm sao để sắp xếp theo thứ tự để nhìn cho đẹp mắt. Nhờ anh giúp nhe. Thanks
 

File đính kèm

  • .jpg
    .jpg
    46.5 KB · Đọc: 123
Upvote 0
Cho hỏi anh Nghĩa
File Quyendangnhap sau khi tạo ra 9 user thì nó nằm lộn xộn và chồng lên nhau. Mình làm sao để sắp xếp theo thứ tự để nhìn cho đẹp mắt. Nhờ anh giúp nhe. Thanks
Bạn Unprotect sheet rồi dùng chuột kéo các nút lại vị trí mình muốn một cách thủ công. Vì hiện tại a Nghĩa đang quy định mỗi khi tạo sheet/user mới thì nó nằm ở đâu đó trên cột N. Kinh nghiệm của mình là tạo các sheet data trước, sau đó chỉnh sửa rồi mới tạo lần lượt từng user vì ở các user mới vị trí của các nút sẽ giống với vị trí đã đặt ở user Admin. Nếu bạn không thích cũng làm tương tự ở các sheet User Home để chỉnh sửa vị trí các nút theo ý muốn.
 
Upvote 0
pinklove ơi cho mình hỏi, File Quyendangnhap mình tải xuống, mình không có pass để Unprotect. Bạn biết chỉ mình với
 
Upvote 0
Cái này không chỉ ở Excel mà các phần mềm khác cũng dính chưởng vụ chỉnh ngày giờ hệ thống với các bản Demo.

Thường là người ta so sánh vừa ngày giờ hệ thống, vừa ngày giờ Internet. Nhưng giả thiết đặt ra là không kết nối mạng thì lấy gì so sánh?
Cho nên trong trường hợp như thế thì bó tay toàn tập, hoặc ngoài sức của tôi.

Giả sử họ chỉnh ngày giờ hệ thống đi nhưng nếu trong file có sử dụng đến cái hàm ngày tháng thì ứng dụng cũng chạy sai theo. Như vậy việc sử dụng ứng dụng đó k còn ý nghĩa nữa.

Ngoài ra khi thay đổi ngày giờ hệ thống thỉ cũng không vào google được ( tôi đã từng bị ).
 
Upvote 0
Trong file đó, bạn tạo thêm 1 module (tôi gọi là ModuleSeries) và chép vào hàm này:

Mã:
Function ReadSeriesNumber()
    With CreateObject("Scripting.FileSystemObject")
        With .GetDrive(Environ("SystemDrive"))
            If .IsReady Then
                ReadSeriesNumber = Abs(.Serialnumber)
            Else
                ReadSeriesNumber = -1
            End If
        End With
    End With
End Function


Sau đó dùng hàm đó để kiểm tra máy của bạn có Series là bao nhiêu.

dùng thủ tục này để kiểm tra:

Mã:
Sub test()
    Debug.Print ReadSeriesNumber
End Sub

Sau khi có số series, bạn đặt câu màu đỏ này lên trên cùng của ModuleSeries


Public Const YourSeries As Long = 1964788159 '<<< Số series của máy tính bạn thay cho số này.

Bây giờ, code của sự kiện Open sẽ như sau:

Mã:
Private Sub Workbook_Open()
    On Error Resume Next
    If Date >= DateSerial(2010, 6, 20) Then
        MsgBox "Het han su dung"
        Call KillFile 'Hoac thay bang Application.Quit
[COLOR=#0000ff]    ElseIf [/COLOR][COLOR=#ff0000]ReadSeriesNumber <> YourSeries[/COLOR][COLOR=#0000ff] Then[/COLOR]
[COLOR=#0000ff]        MsgBox "May nay khong duoc quyen su dung"[/COLOR]
[COLOR=#0000ff]        Call KillFile 'Hoac thay bang Application.Quit[/COLOR]
    Else
        Call StructureUnLock
        With Home
            .Select
            .cmdAdmin.Enabled = False
            .cmdUser1.Enabled = False
            .cmdUser2.Enabled = False
            .cmdUser3.Enabled = False
        End With
        Application.ScreenUpdating = False
        Dim sh As Worksheet
        For Each sh In ThisWorkbook.Worksheets
            If sh.CodeName <> "Home" Then
                sh.Visible = xlSheetVeryHidden
            End If
        Next
        UsfUser.Show
    End If
End Sub


Cái Call StructureUnLock nó ở đâu chú Nghiã nhể
 
Upvote 0
A Hoàng Trong Nghia ơi sao em tải ve khong dung duoc

Đây là file "Demo" cho bạn dùng thử chơi cho vui nè! Mọi password đều là HoangTrongNghia.

Trong file tôi có 4 người được dùng, với Admin là cao nhất, sử dụng được mọi thứ, kể cả reset lại tất cả user & pass (thủ công, nếu muốn tự động, tự các bạn mày mò đi nhé, không khó); và 3 User, chỉ được quyền mở sheet của mình.

[NOTE1]Các Username / Password:

1) ADMIN / Admin

2) USER1 / User1

3) USER2 / User2

4) USER3 / User3[/NOTE1]

Các bạn cứ lần lượt mở file rồi chọn thử từng Username xem sao (mở và đóng 4 lần), nên chọn lần cuối là Admin cho thú vị!

[TIP]Click vào Box Username để xổ ra danh sách Users nha các bạn

attachment.php
[/TIP]



File đã được cập nhật mới, sửa lỗi đăng nhập, các bạn nên tải file AdminAndUsers2.rar nhé!
A Hoàng Trong Nghia ơi sao em tải ve khong dung duoc
 
Upvote 0
AdminAndUsers2 Xin được hướng dẫn cách làm

Tôi rất hứng thú và phục Hoàng Trọng Nghĩa làm được file này!
Tôi hiện đang công tác tại phòng GD-ĐT quận Phú Nhuận
Tôi đang thực hiện một file báo cáo tháng có sự phân quyền từng sheet như vậy cho từng đơn vị rồi đưa vào trang web để các đơn vị thực hiện báo cáo tháng online - thuận tiện cho công tác quản lý.
Xin gởi file excel tôi đang làm và mong được sự chia sẻ.
Nếu được hướng dẫn thực hiện xin được hậu tạ.

đt: 0909010685.
email: dinhquangtranphuc@gmail.com
 
Upvote 0
Upvote 0
Thầy Nghĩa ơi! Em đang dùng mẫu Form đăng nhập này của thầy và chế lại chút xíu cho phù hợp với yêu cầu công việc của em. Thầy chỉ giúp em các vấn đề sau:
1. Cách tạo, chỉnh sửa, di chuyển các nút tạo link liên kết (ví dụ: trong sheet Home có 4 User đăng nhập, giờ 1 muốn thêm 1 cái User nữa thì phải làm sao ạ.
2. Em muốn chỉnh sửa bài trí sheet Home theo ý của em thì phải làm sao ạ.
Em mới mày mò với VBA nhưng công việc đang cần mong thầy Nghĩa chỉ giáo tận tình giúp em ạ.
Em cảm ơn Thầy Nhiều!
 
Upvote 0
Thày Nghĩa của bạn chắc đang nghĩ chế độ Vợ đẽ tuần nay rồi!
 

File đính kèm

  • HTNg.JPG
    HTNg.JPG
    32.8 KB · Đọc: 89
Upvote 0
Anh Nghĩa ơi! giup em với

Em đang dùng file này của anh, tại các User con em chèn thêm sheet cho nó, nhưng khi save và thoát rồi vào lại không còn sheet vừa chèn nữa. em có cài link dẫn tới nhưng nháp vào cũng không có tác dụng. nhưng em tiếp tục inset sheet thi no ra sheet mang số thứ tự tiếp theo, nghĩa là sheet luc nãy vần tồn tại. giờ làm sao để giải quyết việc này anh chỉ em với.

attachment.php


Và đây nữa, nó là sheet để tạo tất cả các nút lệnh hồng và cam của user đây:

attachment.php
[/QUOTE]
 
Upvote 0
nêu disable macro thì không cần mật khẩu vào file được

Mọi người chỉ cho em cáchchèn hình chìm có chữ ký như file đính kèm trên với
paperclip.png
Tập tin đính kèm
Em cám ơn!

chào các bạn, khi làm form đăng nhập, nếu macro ỡ trạng thái disable thì không cần pass vẫn vào file được. vậy có vba code khi chạy form của mình tự động enable macro lên để bắt nhập mật khẩu hoặc có cách làm form đăng nhập không cần enable macro không, xin hướng dẫn. cảm ơn các bạn.
 
Upvote 0
chào các bạn, khi làm form đăng nhập, nếu macro ỡ trạng thái disable thì không cần pass vẫn vào file được. vậy có vba code khi chạy form của mình tự động enable macro lên để bắt nhập mật khẩu hoặc có cách làm form đăng nhập không cần enable macro không, xin hướng dẫn. cảm ơn các bạn.
Bạn tham khảo cách này nè bạn, không cần enable vẫn chạy được macro.
http://www.giaiphapexcel.com/forum/...p-tin-Excel-có-macro-mà-không-cần-phải-Enable
 
Lần chỉnh sửa cuối:
Upvote 0
Các anh cho em hỏi. Em tạo cái Form đăng nhập Excel bằng MS EXCEL 2010 thì OK. Nhưng khi mở bằng phiên bản MS Excel 2007 thì nó không hiện lên màn hình đăng nhập là sao vậy ạ?
 
Upvote 0
PASS của A HTN đây nha các bạn

PASS của A HTN đây nha các bạn
Pass: 797979
 
Upvote 0
Bạn ơi !! Mình mở file cũng bị như vậy :( bạn giúp mình với được k ạ ?
 
Upvote 0
Hi anh Nghĩa,
Em muốn viết phần mềm quản lý kho trên excel nhưng tự mình không làm được.
Anh có mẫu PM nào không cho em xin với.
Thanks!
 
Upvote 0
anh chị ơi!
cho em hỏi là làm sao liên kết cái form đăng nhập với một trang excel mình đã có ạ!
em xin chân thành cảm ơn ạ
 
Upvote 0
rất cảm ơn bạn nhưng ban ơi sao trên một số máy tính khi mở tệp tin lên lại không hiển thị form đăng nhập nữa, nó vào trực tiếp luôn, tức là không cần đăng nhập, phải làm sao đây bạn? Giải đáp giúp mình với! cảm ơn bạn nhiều!
 
Upvote 0
cho hỏi làm cách nào để chèn được tệp tin vào phần trả lời đc vậy ạ? cảm ơn nhiều
 
Upvote 0
Hix làm ơn cho mình hỏi mình làm được rồi nhưng khi cop sang máy tính mà cái win7 toàn bão lỗi, mặc dù office đã chuyển về bản 32b
 
Upvote 0
Tặng các bạn các FORM ĐĂNG NHẬP & FORM THAY ĐỔI USER, PASS

Chỉ là trò chơi màu mè thôi, chứ nếu người ta cài đặt Macro Setting ở chế độ High thì chương trình xem như ai vào nhà mình cũng OK.

Khi mở file, các bạn sẽ thấy một form hiện lên:

attachment.php



Tôi mặc định sẳn User và Pass rồi, chỉ bấm Nhập. Nhưng lưu ý, bạn chỉ được quyền sai User hoặc Pass trong vòng 4 lần, sau 4 lần sẽ tự động thoát file. Thú vị chứ nhỉ?

Và tại sheet có một nút lệnh để thay đổi User & Pass, ở đó bạn chỉ cần làm đúng các yêu cầu trong form này:

attachment.php



thì các bạn sẽ được thay đổi quyền đăng nhập.

Để làm khó tí xíu cho các bạn tôi đã đặt VBA pass là: HoangTrongNghia

Riêng Password đã đăng nhập thì các bạn tự tìm trong file xem nó ở đâu nhé!
Bài đã được tự động gộp:

Tặng các bạn các FORM ĐĂNG NHẬP & FORM THAY ĐỔI USER, PASS

Chỉ là trò chơi màu mè thôi, chứ nếu người ta cài đặt Macro Setting ở chế độ High thì chương trình xem như ai vào nhà mình cũng OK.

Khi mở file, các bạn sẽ thấy một form hiện lên:

attachment.php



Tôi mặc định sẳn User và Pass rồi, chỉ bấm Nhập. Nhưng lưu ý, bạn chỉ được quyền sai User hoặc Pass trong vòng 4 lần, sau 4 lần sẽ tự động thoát file. Thú vị chứ nhỉ?

Và tại sheet có một nút lệnh để thay đổi User & Pass, ở đó bạn chỉ cần làm đúng các yêu cầu trong form này:

attachment.php



thì các bạn sẽ được thay đổi quyền đăng nhập.

Để làm khó tí xíu cho các bạn tôi đã đặt VBA pass là: HoangTrongNghia

Riêng Password đã đăng nhập thì các bạn tự tìm trong file xem nó ở đâu nhé!
anh ơi có cách nào giúp em với. Em dùng file của anh để sửa thành file của em rồi (Có nghĩa là em tận dụng Form đăng nhập của anh); em đã thay đổi mật khẩu nhưng bây giờ quên nên không sao mở được ra nữa. Anh giúp em với. Em cảm ơn rất nhiều.
Bài đã được tự động gộp:

anh ơi có cách nào giúp em với. Em dùng file của anh để sửa thành file của em rồi (Có nghĩa là em tận dụng Form đăng nhập của anh); em đã thay đổi mật khẩu nhưng bây giờ quên nên không sao mở được ra nữa. Anh giúp em với. Em cảm ơn rất nhiều.
 
Upvote 0
Bạn cho mình hỏi tý
Code trong vba để khi đăng nhập không cho hiển thị workbook mà chỉ cho hiển thị form đăng nhập là gì vậy HoangTrongNghia?
Thanks nhé!
 
Upvote 0
Bạn cho mình hỏi tý
Code trong vba để khi đăng nhập không cho hiển thị workbook mà chỉ cho hiển thị form đăng nhập là gì vậy HoangTrongNghia?
Cảm ơn nhé!
Là thế này nè.
Mã:
Application.Visible = False
Nhưng trước khi sử dụng phải suy nghĩ cho kỷ trước khi dùng nhé! Coi chừng hối hận không kịp nghe :D:D:D:D:D
 
Upvote 0
Hình như là thế hệ các thành viên từ năm 2012 trở về sau thường có tính ỷ lại, không bao giờ chịu động não để giải quyết vấn đề thì phải!

Tôi đã ghi quá rõ như sau:




Tại sao không đọc kỹ những gì người ta viết rồi mới hỏi nhỉ?

Có vài dòng thôi đâu có tràn lan đại hải đâu mà làm biếng đọc?

1)

Có nghĩa là không cần gõ vào bất cứ thứ gì hết, chỉ bấm nút Nhập khi mở file


2)

Khóa VBA tức là khóa Macro đó, mở VBA (Alt+F11) chọn vào tên file và gõ password ở trên vào để mở khóa.


3)

Cái quan trọng là mở được VBA để xem, mà mở được VBA rồi thì không lý do gì mà không thể tìm ra Password mà tôi đã để ở đâu đó trong sheet để thay đổi pass mới phải nhập vô pass này trước.

Vậy sao không thử tìm trong code của UserForm?

Cả 2 Form đều có thủ tục này:

Mã:
Private Sub UserForm_Initialize()
      Workbooks(ThisWorkbook.Name).Activate
      Application.EnableCancelKey = xlErrorHandler
      Application.Visible = False
      Dim hWnd As Long
      On Error Resume Next
      hWnd = FindWindow("ThunderDFrame", Me.Caption)
      SetWindowLong hWnd, -16, &H84080080
      Me.Height = 130
     
      [COLOR=#0000cd][B]Usr [/B][/COLOR][COLOR=#ff0000][B]= Nguon.[H2].Value
      [/B][/COLOR][COLOR=#0000cd][B]Pwd [/B][/COLOR][COLOR=#ff0000][B]= Nguon.[H3].Value[/B][/COLOR]
     
      txtUser = Usr
      With txtPassword
            .SetFocus: .SelStart = 0: .SelLength = Len(.Text)
      End With
End Sub

Mã:
Private Sub UserForm_Initialize()
      Dim hWnd As Long
      On Error Resume Next
      hWnd = FindWindow("ThunderDFrame", Me.Caption)
      SetWindowLong hWnd, -16, &H84080080
      Me.Height = 120
     
      [COLOR=#0000cd][B]Usr [/B][/COLOR][COLOR=#ff0000][B]= Nguon.[H2].Value
      [/B][/COLOR][COLOR=#0000cd][B]Pwd [/B][/COLOR][COLOR=#ff0000][B]= Nguon.[H3].Value[/B][/COLOR]
     
      txtUser.Text = Usr
      txtPassword.SetFocus
End Sub

Thế thì giá trị của User & Password nó nằm trong sheet NGUON cell H2 & H3 chứ còn gì nữa!

Cái sheet mà các bạn nhìn thấy không có Sheet Tab để chọn sheet, thì các bạn vào Tool > Options > View và check vào Sheet Tabs thôi!

Khi đã mở sheet ra và không thấy cái sheet NGUON nào cả thì phải hiểu là nó bị ẩn rồi chứ gì! Vậy phải cho nó hiện lên chứ còn gì nữa!

Vào VBA chọn vào tên sheet Nguon và chọn thuộc tính (Properties) của sheet Visible -1 - xlSheetVisible để cho nó hiện lên!

Bây giờ các bạn chỉ còn việc tìm cột H của nó nằm ở đâu mà lấy cái gì đó mà các bạn cần tìm thôi. Chẳng lẽ tới đây mà các bạn cũng không làm được thì thôi, các bạn đừng chơi cái này nữa!

Tôi làm khó các bạn (chỉ tí xíu thôi) để các bạn tự mày mò, nghiên cứu thêm, vận dụng kiến thức của các bạn sẳn có để thao tác trên file này, thế mà ...
té ra em củng thông minh tạo không hiểu Pwd = Nguon.[H3].Value là gì đoán đoán chắc là = nguon.range("H3").value nên viết cái sub Debug.print nguon.range("H3").value là ra pass. thank anh nghĩa nhé, cái uf này em đang cần
 
Upvote 0
Viết bài trả lời...mình muốn phân quyền cho user thì làm sao ạ?
 
Upvote 0
Các anh cho em hỏi. tạo được một file có phân quyền đăng nhập rồi. mỗi người một Use, nhưng làm thế nào để nhiều người có thể truy cập trên cùng file đó. Sửa lưu giữ liệu.
 
Upvote 0
Tặng các bạn các FORM ĐĂNG NHẬP & FORM THAY ĐỔI USER, PASS

Chỉ là trò chơi màu mè thôi, chứ nếu người ta cài đặt Macro Setting ở chế độ High thì chương trình xem như ai vào nhà mình cũng OK.

Khi mở file, các bạn sẽ thấy một form hiện lên:

attachment.php



Tôi mặc định sẳn User và Pass rồi, chỉ bấm Nhập. Nhưng lưu ý, bạn chỉ được quyền sai User hoặc Pass trong vòng 4 lần, sau 4 lần sẽ tự động thoát file. Thú vị chứ nhỉ?

Và tại sheet có một nút lệnh để thay đổi User & Pass, ở đó bạn chỉ cần làm đúng các yêu cầu trong form này:

attachment.php



thì các bạn sẽ được thay đổi quyền đăng nhập.

Để làm khó tí xíu cho các bạn tôi đã đặt VBA pass là: HoangTrongNghia

Riêng Password đã đăng nhập thì các bạn tự tìm trong file xem nó ở đâu nhé!
Bài đã được tự động gộp:

Tặng các bạn các FORM ĐĂNG NHẬP & FORM THAY ĐỔI USER, PASS

Chỉ là trò chơi màu mè thôi, chứ nếu người ta cài đặt Macro Setting ở chế độ High thì chương trình xem như ai vào nhà mình cũng OK.

Khi mở file, các bạn sẽ thấy một form hiện lên:

attachment.php



Tôi mặc định sẳn User và Pass rồi, chỉ bấm Nhập. Nhưng lưu ý, bạn chỉ được quyền sai User hoặc Pass trong vòng 4 lần, sau 4 lần sẽ tự động thoát file. Thú vị chứ nhỉ?

Và tại sheet có một nút lệnh để thay đổi User & Pass, ở đó bạn chỉ cần làm đúng các yêu cầu trong form này:

attachment.php



thì các bạn sẽ được thay đổi quyền đăng nhập.

Để làm khó tí xíu cho các bạn tôi đã đặt VBA pass là: HoangTrongNghia

Riêng Password đã đăng nhập thì các bạn tự tìm trong file xem nó ở đâu nhé!
Sao em Tai về nó báo lỗi hả anh
 
Upvote 0
Bác Nghĩa ơi sang Tải file về mở lên Nó không hiện Userform để đăng nhập em Gửi qua Máy khác mở Thủ cũng bị Lỗi a mong anh hướng dãn ạ
 
Upvote 0
Tặng các bạn các FORM ĐĂNG NHẬP & FORM THAY ĐỔI USER, PASS

Chỉ là trò chơi màu mè thôi, chứ nếu người ta cài đặt Macro Setting ở chế độ High thì chương trình xem như ai vào nhà mình cũng OK.

Khi mở file, các bạn sẽ thấy một form hiện lên:

attachment.php



Tôi mặc định sẳn User và Pass rồi, chỉ bấm Nhập. Nhưng lưu ý, bạn chỉ được quyền sai User hoặc Pass trong vòng 4 lần, sau 4 lần sẽ tự động thoát file. Thú vị chứ nhỉ?

Và tại sheet có một nút lệnh để thay đổi User & Pass, ở đó bạn chỉ cần làm đúng các yêu cầu trong form này:

attachment.php



thì các bạn sẽ được thay đổi quyền đăng nhập.

Để làm khó tí xíu cho các bạn tôi đã đặt VBA pass là: HoangTrongNghia

Riêng Password đã đăng nhập thì các bạn tự tìm trong file xem nó ở đâu nhé!
Sao em tải về không Mở được hả Bác Nghĩa ui
 
Upvote 0
Tặng các bạn các FORM ĐĂNG NHẬP & FORM THAY ĐỔI USER, PASS

Chỉ là trò chơi màu mè thôi, chứ nếu người ta cài đặt Macro Setting ở chế độ High thì chương trình xem như ai vào nhà mình cũng OK.

Khi mở file, các bạn sẽ thấy một form hiện lên:

attachment.php



Tôi mặc định sẳn User và Pass rồi, chỉ bấm Nhập. Nhưng lưu ý, bạn chỉ được quyền sai User hoặc Pass trong vòng 4 lần, sau 4 lần sẽ tự động thoát file. Thú vị chứ nhỉ?

Và tại sheet có một nút lệnh để thay đổi User & Pass, ở đó bạn chỉ cần làm đúng các yêu cầu trong form này:

attachment.php



thì các bạn sẽ được thay đổi quyền đăng nhập.

Để làm khó tí xíu cho các bạn tôi đã đặt VBA pass là: HoangTrongNghia

Riêng Password đã đăng nhập thì các bạn tự tìm trong file xem nó ở đâu nhé!
Cảm ơn anh nhé!
 
Lần chỉnh sửa cuối:
Upvote 0
Thử cái này xem sao nha, có gì không hài lòng xin thông cảm, mới vọc VB thôi, không biết gì nhiều đâu -\\/.
@ducky2301 ơi mình muốn file excel của mình chỉ được sử dụng ở một số máy tính nhất định, nên thêm 1 cột điều kiện nữa là dò tìm "Computer Name" của máy, nếu đúng thì mới có thể mở file được không?
 

File đính kèm

  • 1604561654290.png
    1604561654290.png
    2.7 KB · Đọc: 12
Upvote 0
Em chào các anh chị.
Các anh chị cho em hỏi ké. Em có một đoạn code nhỏ nhỏ như file đính kèm. Anh chị cho em hỏi vì sao khi e để mảng arr kiểu byte thì đoạn code không thể chạy đến hoàn thiện được, còn để kiểu khác như integer thì lại chạy được.
Em xin cảm ơn.
Đoạn code thế này ạ:
Sub v()
Dim arr(1 To 1, 1 To 5) As Byte
Dim i As Byte
For i = 1 To 5
arr(1, i) = i
MsgBox "dkf: " & arr(1, i)
Next i
Range("A1").Resize(1, 5) = arr
End Sub
 

File đính kèm

Upvote 0
Không hiểu các bạn làm cái Form với mật khẩu để làm gì nhỉ? Tôi hỏi thật vì muốn biết lý do.
Tôi chỉ cần disable macro thì xong.

Mà chả cần disable macro.

Hiện thời bạn có:
Mã:
    With login
        .Height = ActiveWindow.Height + [B][COLOR=#ff0000]150[/COLOR][/B]
        .Width = ActiveWindow.Width
    End With

Vậy trên máy tôi tôi vẫn nhìn thấy thẻ "Sheet1" và "dieukiennho"

View attachment 110285

Tôi chỉ cần chuột phải lên thẻ này hoặc thẻ kia rồi chọn "Viiew code" thế là tôi vào được trong VBE. Vào rồi thì chọn Run --> Reset. Thế là xong, form Login mất tiêu.

Bạn có thể "che hết" bằng code .Height = ActiveWindow.Height + 500???

Thôi thì chả cần disable macro hay tốn công click, chọn menu làm gì

Hiện thời code của bạn thực thi rất lâu vì muốn "hiện từ từ" form Login. Vậy thì: kích hoạt tập tin --> ở thời điểm bất kỳ giữa lúc bắt đầu animate form tới khi hiện Frame (sau thời điểm này thì "muộn rồi") thì nhấn ESC --> trong cửa sổ nhẩy ra chọn End. Xong.
With login
.Height = ActiveWindow.Height + 150
.Width = ActiveWindow.Width
End With
Anh chỉ cần thay đoạn code trên bằng đoạn code sau là ok:
With login
ActiveWindow.DisplayWorkbookTabs = False
End With
 
Upvote 0

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

Back
Top Bottom