:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

Lock workbook, lock and Protect sheet from viewing

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
maya
Member
Member
Posts: 21
Joined: Wed Apr 04, 2012 11:26 am

Lock workbook, lock and Protect sheet from viewing

#1

Post by maya »

ขอรบกวนหน่อยนะคะ คือ
ถ้าสร้าง work book ขึ้นมา ซึ่งจะประกอบไปด้วยหลาย sheets อยู่แล้ว ต้องการ protect และ lock แค่บาง sheets ซึ่งต้องการให้ protect โดยให้ไม่สามารถเห็นcontent ในsheet หรือไม่สามารถเปิด sheet ได้ หากไม่กรอกรหัสก่อน(โดยปกติทราบว่า สามารถแค่ป้องกันการแก้ไข) แล้ว lock work book เพิ่มอีกชั้นโดยการใส่รหัสก่อนเปิด
ทั้งหมดนี่สามารถทำในexcel ได้ไหมคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lock workbook, lock and Protect sheet from viewing

#2

Post by snasui »

:D เราสามารถซ่อนชีทไว้ได้ครับ กรณีใช้ Excel 2003 เลือกชีทที่ต้องการซ่อน ข้าเมนู Format > Sheet > Hide

กรณีใช้ Excel 2007 ขึ้นไปคลิกขวาที่แถบชีท > Hide

จากนั้นทำการป้องกัน Workbook ไว้ครับ
maya
Member
Member
Posts: 21
Joined: Wed Apr 04, 2012 11:26 am

Re: Lock workbook, lock and Protect sheet from viewing

#3

Post by maya »

ได้แค่ซ่อนชีทหรอคะ แบบนี้หากลืมซ่อนในครั้งต่อไป ก็อาจจะไม่ปลอดภัย พอดีต้องการ security ให้กับชีทน่ะคะ เพราะสมมติ คนในแผนกเดียวกัน แต่บางชีทบางคนก็ไม่จำเป็นต้องทราบน่ะคะ มีวิธีอื่นไหมคะ ขอบคุณค่ะ
User avatar
songsug
Member
Member
Posts: 71
Joined: Wed Apr 04, 2012 11:22 am
Location: สมุทรสาคร

Re: Lock workbook, lock and Protect sheet from viewing

#4

Post by songsug »

ถ้าแบบนั้นใช้การกำหนดสิทธ์เป็น User เครื่องได้ไหมครับ ใช้ Application.username ก็ได้
โดยใช้ VBA ตอนเปิดไฟล์ขึ้นมา Check user ตามเงื่อนไข อาจใช้ IF เข้ามาช่วยเช่น
IF application.username = "IT18" Then
Sheetที่กำหนดสิทธ์1.Visible = True
Sheetที่กำหนดสิทธ์2.Visible = True
Sheetที่กำหนดสิทธ์3.Visible = True
else
Sheetที่กำหนดสิทธ์1.Visible = false
Sheetที่กำหนดสิทธ์2.Visible = false
Sheetที่กำหนดสิทธ์3.Visible = false
end if
ปล แต่ถ้า User มีหลายเครื่องและหลายสิทธิ์มาก แนะนำให้สร้างตารางกำหนดสิทธ์บน Excel แล้วตรวจสอบ User ที่เข้ามาใช้งานล้วใช้ For วนซ่อน Sheet ก็ได้ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lock workbook, lock and Protect sheet from viewing

#5

Post by snasui »

:lol: การป้องกันตามลักษณะที่ถามมีวิธีเยอะแยะครับ

หากไม่ต้องการให้บางคนเห็นข้อมูลใด ๆ สามารถใช้การ Login เข้ามาช่วย เพื่อจำกัดสิทธิ์บางอย่าง เช่นถ้าเป็น Admin จะเห็นทั้งหมด ถ้าเป็น User ก็จะเห็นแค่ 3 หน้า จาก 100 หน้า หรือเห็นชีททั้งหมดแต่ไม่เห็น Contents เช่นนี้เป็นต้น และสามารถทำได้อีกมาก แต่การทำเช่นนั้นคงต้องใช้ VBA เข้ามาช่วยเช่นที่คุณ songsug ยกตัวอย่างมา

และการซ่อนที่ผมแนะนำไปก็สามารถที่จะยกเลิกการซ่อนเมื่อทำการปิดไฟล์แล้วค่อยซ่อนใหม่เมื่อเปิดไฟล์และเช็คสิทธิ์ของผู้ใช้แล้วว่าไม่มีสิทธิ์ดูชีทนั้น ๆ นอกจากนี้ยังสามารถที่จะกำหนดให้ใช้งานโดยกำหนดรหัสเป็นพื้นที่ได้ ฯลฯ

ไม่ทราบว่าต้องการใช้แบบไหนลองออกแบบมา และหากต้องใช้ VBA จำเป็นต้องเขียนมาก่อนเสมอครับ
maya
Member
Member
Posts: 21
Joined: Wed Apr 04, 2012 11:26 am

Re: Lock workbook, lock and Protect sheet from viewing

#6

Post by maya »

ช่วยแก้ไขด้วยนะคะ แก้แล้วไม่ผ่านค่ะ

Code: Select all

Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ws As Worksheet
Dim C As Range
For Each ws In Sheets
If ws.Name <> "customer" Then ws.Visible = xlSheetVeryHidden
ElseIf ws.Name <> "ownerroom" Then ws.Visible = xlSheetVeryHidden
ElseIf ws.Name <> "room" Then ws.Visible = xlSheetVeryHidden
ElseIf ws.Name <> "payment" Then ws.Visible = xlSheetVeryHidden
ElseIf ws.Name <> "infrastructuremonthly" Then ws.Visible = xlSheetVeryHidden
Next ws
End If
End Sub
 
Private Sub Workbook_Open()
Dim user As String
Dim pwd As String
Dim ct As Integer
Dim LR As Long
Dim C As Range
LR = Sheets("Login").Cells(Rows.Count, "A").End(xlUp).Row
user = InputBox("Enter your UserName")
Set C = Worksheets("Login").Range("$A1:$A" & LR).Find(user, LookIn:=xlValues)
    If C Is Nothing Then
        MsgBox "Unauthorized to proceed"
    Me.Close
    End If
ct = 2
retry:
    pwd = InputBox("Enter Password")
    If pwd <> Sheets("Login").Cells(C.Row, 2) Then
    If ct = 0 Then
       MsgBox "Out of tries"
    Me.Close
   End If
       MsgBox "Wrong Password." & Chr(10) & "You have " & ct & " tries left"
       ct = ct - 1
       GoTo retry
   End If
Dim ws As Worksheet
For Each ws In Sheets
If ws.Name <> "customer" Then ws.Visible = xlSheetVeryHidden
ElseIf ws.Name <> "ownerroom" Then ws.Visible = xlSheetVeryHidden
ElseIf ws.Name <> "room" Then ws.Visible = xlSheetVeryHidden
ElseIf ws.Name <> "payment" Then ws.Visible = xlSheetVeryHidden
ElseIf ws.Name <> "infrastructuremonthly" Then ws.Visible = xlSheetVeryHidden
Next ws
End If

End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lock workbook, lock and Protect sheet from viewing

#7

Post by snasui »

:D แนบไฟล์ตัวอย่างมาด้วยครับ เพื่อน ๆ จะได้ช่วยทดสอบได้ครับ
chacriya
Member
Member
Posts: 1
Joined: Wed Dec 07, 2011 8:16 pm

Re: Lock workbook, lock and Protect sheet from viewing

#8

Post by chacriya »

หากต้องการใส่password ในการเปิดแต่ละsheet สามารถทำได้หรือไม่คะ หากสามารถทำได้รบกวนขอวิธิการเขียนแต่ละขั้นดอน
ขอบคุณมากค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lock workbook, lock and Protect sheet from viewing

#9

Post by snasui »

:D คำว่าใส่ Password ในการเปิดแต่ละ Sheet ช่วยอธิบายขั้นตอนการป้องกันมาด้วยว่าต้องการให้เป็นลักษณะใด โดยลำดับมาทีละขั้นครับ

หมายถึงเมื่อ Click ที่แถบชีทแล้วให้แสดงกล่องโต้ตอบให้ใส่ Password ใช่หรือไม่ หากใช่ จะต้องใช้ VBA ซึ่งต้องเขียนมาก่อนตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:
Post Reply