MrHieu đã viết:Cái này hơi bị khó đấy bác ạ. Nếu viết bằng VBA hoặc sử dụng công cụ Digital Certificate for VBA Projects thì chỉ cần Disable Macro là được. Không biết bác có cao kiến gì không ?
hai2hai đã viết:Mọi người phải hiểu nghĩa của từ "bảo mật" trong ứng dụng phần mềm chứ ko mỗi người nói 1 kiểu đâm ra chẳng ai hiểu ai:
- Bảo mật lisence (làm sao để chống sử dụng trái phép PM)
- Bảo mật mức ứng dụng (cái mà lachinhan nói tới: ai được phép thực hiện công việc nào trong chương trình,...)
- Bảo mật mức hệ thống (ví dụ: làm sao để vượt qua bảo mật của hệ điều hành, còn đối với Excel thì làm sao để ko mở được VBA,...)
- Bảo mật mức CSDL (ví dụ: làm sao để tránh mọi người có thể truy cập trực tiếp 1 cách trái phép vào database. Đối với Excel thì làm sao để mọi người ko vào được các file chứa dữ liệu - sử dụng pws liệu có đảm bảo hay ko??)
- Bảo mật mức mạng (LAN, WAN, Internet: Firewall, v.v...)
- Bảo mật mức hành chính (dùng khóa cửa, xích sắt to đùngđể chống kẻ trộm đột nhập trái phép vào phòng chứa dữ liệu hoặc phần mềm,...)
Đấy, sơ qua có ngần đấy cái mà người ta gọi là Security policy của phần mềm. Từ đó bạn sẽ suy ra đâu là cái bảo mật của các bạn. Tránh mỗi người nói 1 ý.
lachinhan đã viết:…….mình nghĩ với trình độ của nhân viên nhập liệu, và cán bộ văn phòng .... là không thể.Chỉ 1 số ít người am hiểu về VBA for Excel thui như mình chẳng hạn![]()
MrHieu đã viết:Quả thực mình nghĩ bạn rất giỏi (nếu không muốn nói là cực giỏi) về VBA. Bởi những người amatuer như tụi mình chưa ai dám nói như vậy. Nếu vậy thì những lời sau đây nếu mình có nói sai thì mong thông cảm và mong được chỉ bảo (bởi mình biết bạn giỏi hơn mình rất nhiều - Về lập trình)
lachinhan đã viết:Bạn nào muốn bảo mật cả chương trình Excel thì la lên bạn nhe', mình sẽ post bài hướng dẫn.Điều mà mình muốn nói đến đó là khi mình mở Excel lên sẽ xuất hiện 1 form để login vào Excel. Nếu gõ ko đúng ID và pass sẽ hiện thông báo và đóng Excel. Chỉ có những ai có ID và pass thì mới sử dụng được. Hướng của mình là sẽ phân quyền sử dụng excel luôn, người nhập liệu thì chỉ có quyền nhập liệu mà thôi, admin sẽ được toàn quyền sử dụng excel hehe
. Điều này cũng đơn giản thôi nhưng do cv bận quá nên làm piếng làm. Ai có hứng thú thì post bài thảo luận chơi
TuanVNUNI đã viết:Các bạn làm thử thế này nhé.
+ Đặt path trong VBA
+ Vào menu Tools\ chọn Share Workbook...
+ Bạn hãy cùng mở trên ít nhất 2 máy tính (hoặc một máy mở bằng 2 instance)
+ Khi đã mở như trên bạn vào VBA xem có phải bị "Project unviewable" không?
Vấn đề ở đây chúng tạo ra một "lỗi" mà MS EXCEL cho là lỗi, khi đó nó không cho mở form để nhập pass gọi là "Project unviewable". Vấn đề ở đây "lỗi" chúng ta vẫn dùng được chú không phải lối mà debug phát hiện ra.
TuanVNUNI đã viết:Khi đã chuyển về *.xla mà bị "Project unviewable" thì phải có phần mềm phá pass thôi.
Public Sub IsAdd_In(Optional bk As Workbook, Optional blnIsAddIn As Boolean)
If bk Is Nothing Then Set bk = ActiveWorkbook
bk.IsAddin = blnIsAddIn
End Sub
Đó là một trong những tư duy rất cơ bản của người người lập trình.Trong phần cuối của tài liệu Tiếng Anh của bạn có một dòng, mình đặc biệt chú ý. Đó là: You can open the add-in's locked VBA project by opening a new workbook and creating a VBA procedure to set the IsAddin property of the ThisWorkbook object of the add-in to False and then unshare the add-in workbook
Nhưng để cho dễ hiểu thì anh xem cái này:This example determines whether the active workbook is open in exclusive mode. If it is, the example saves the workbook as a shared list.
If Not ActiveWorkbook.MultiUserEditing Then ActiveWorkbook.SaveAs fileName:=ActiveWorkbook.FullName, _ accessMode:=xlSharedEnd If
Public Sub Workbook_UnShared(Optional bk As Workbook)
If bk Is Nothing Then Set bk = ActiveWorkbook
If bk.MultiUserEditing Then bk.ExclusiveAccess
End Sub
Giới thiệu các bạn một topic ngược lại với topic này.NHG đã viết:Mình làm theo hướng dẫn thì làm đc file Add-in (*.xla) hiển thị chữ "Project unviewable" nhưng bây giờ không tài nào mở đc nó ra nữa, thế mới đau chứ. Làm theo hướng dẫn của các bạn nhưng vẫn không ăn thua. Hay là tại mình ốc quá nhỉ, bạn nào có thể hướng dẫn trình tự các bước mở file Add-in hiển thị chữ "Project unviewable" đc ko?
Private Sub CmdBtnFindCode_Click()
CBCodSource.ListIndex = detectCode - 1
End Sub
Private Sub CBCodSource_Click()
Dim idx1 As Integer, idx2 As Integer
idx1 = CBCodSource.ListIndex + 1
idx2 = CBCodDest.ListIndex + 1
If idx1 = 40 Then idx1 = 39
If idx2 = 40 Then idx2 = 39
setcode idx1, idx2
idCodeSource = idx1
idCodeDes = idx2
End Sub
Private Sub CBCodDest_Click()
CBCodSource_Click
End Sub
Private Sub CommandStop_Click()
IsStop = True
CommandStop.Enabled = False
End Sub
Sub myClose_Click()
Unload Me
End Sub
Private Sub OptionButtonDown_Click()
SelectRange Me
End Sub
Private Sub OptionButtonFull_Click()
SelectRange Me
End Sub
Private Sub OptionButtonSelect_Click()
SelectRange Me
End Sub
Private Sub OptionButtonUp_Click()
SelectRange Me
End Sub
Sub Replaceall_Click()
CBCodSource_Click
doConvert
Percent myPross, 100
End Sub
Sub setcode(Sour As Integer, Des As Integer)
If Me.Tag <> "LoadOK" Then Exit Sub
Me.LabelTest.Text = TestConvert(Sour, SpinButton1.Value)
VK_Code2Code Sour, Des
VK_Code2Code Sour, Des
flagVIQR = (Sour = 24)
End Sub
Private Sub SpinButton1_Change()
With Me
setcode .CBCodSource.ListIndex + 1, .CBCodSource.ListIndex + 1
.LabelTest.SelStart = Len(.LabelTest.Text)
.LabelTest.SetFocus
End With
End Sub
Private Sub UserForm_Initialize()
Dim Code As Integer
With Me
.imgPanel.Picture = frmResource.vkpanel.Picture
.myClose.Picture = frmResource.myClose.Picture
.CommandStop.Picture = frmResource.CommandStop.Picture
.CommandHelp.Picture = frmResource.CommandHelp.Picture
idCodeSource = detectCode
checkDefCode
'idCodeSource = iDefaultCode
Code = idCodeSource
SetFontList .CBCodSource, Code - 1
SetFontList .CBCodDest, 38 ' 14
'idCodeDes = 39
.Tag = "LoadOK"
End With
myLoadSetting
SelectRange Me
CBCodSource_Click
End Sub
Private Function TestConvert(Sour As Integer, l As Integer) As String
Dim TempStr As String, TempStr1 As String
VK_Code2Code Sour, 15
TempStr1 = GetWordsForTestConvert(l)
TempStr = TempStr1 + TempStr1
TestConvert = Left(TempStr, VK_Convert(TempStr1, TempStr))
End Function
Private Function mySaveSetting()
SaveSetting myApp, Section, "ChBSave", Str(Me.ChBSave.Value)
End Function
Private Function myLoadSetting()
ChBSave.Value = Trim(GetSetting(myApp, Section, "ChBSave")) = "True"
End Function
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
mySaveSetting
End Sub
Bác tham khảo ở đây nhé :DotNhan đã viết:Theo tôi lỗi "Project unviewable" là do bản Excel trước mở file đã lưu bằng Excel sau.
Ví dụ file viết bằng VBA nếu đặt Password trên office XP khi mởi bằng office 98 thì sẽ nhận thông báo lỗi trên.
Muốn hết lỗi này bạn phải bỏ Password thì Excel version trước mở ra sử dụng được, tất nhiên có thể một số lệnh của VBA sẽ báo lỗi - lúc đó sửa lại sau.