ข้ามไปที่เนื้อหาหลัก

ทำปุ่ม Macro ใน Excel file + VBA : Protect/Unprotect all sheets tabs

Excel : Make macro button (VBA : Protect/Unprotect all sheets tabs)

ในการใช้งาน Excel กรณีที่มีงานที่ต้องทำซ้ำ ๆ กันบ่อย ๆ บางครั้ง เราก็จะทำ Macro ขึ้นมาเพื่อที่จะลดขั้นตอนหลาย ๆ อย่างลง แต่ Macro ที่ทำขึ้นมามันจะใช้ได้เฉพาะ Excel ที่มี Code อยู่เท่านั้น
ทีนี้ หากเราต้องการที่จะให้ Macro ที่เราได้ทำขึ้นมา สามารถใช้ได้กับทุก Excel และ แม้แต่ไฟล์ที่สร้างขึ้นมาใหม่ จะทำยังไง
โดยไม่ต้องมานั่ง Copy/Paste โค๊ด Macro ลงไปในไฟล์ใหม่นั้น ๆ 
วันนี้ก็จะนำเสนอวิธีการสร้างปุ่มกด Macro ใน Excel ซึ่งจะทำให้เราสามารถใช้ Macro ที่เราได้ทำไว้ง่าย ๆ โดย คลิ๊กที่ปุ่มนี้เท่านั้น มาดูขั้นตอนกันเลยครับ

ในตัวอย่างนี้จะเป็น Macro การ Protect sheet ทุก sheet ใน Excel ที่เปิดอยู่ และ การ Unprotect sheet ทุก sheet ใน Excel ที่เปิดอยู่นะครับ มาดูขั้นตอนกันเลย

1. ก่อนอื่นก็ให้สร้าง Excel ไฟล์ขึ้นมา จากนั้นให้ไปที่แท๊บ "Developer" และเลือก "View Code"


Excel ก็จะเปิดหน้าต่าง "Microsoft Visual Basic for Application" ขึ้นมา


2. จากนั้นให้ คลิ๊กขวาที่ icon รูป Folder ที่ชื่อ "Microsoft Excel Objects" จากนั้นเลือก "Insert" และเลือก "Module"



ก็จะได้ Module ขึ้นมา


3. ทำการ Double click ที่ Module จากนั้น Copy code ด้านล่างนี้ไปวางไว้ใน Module 
หรือใครมี Code macro ที่ตัวเองใช้อยู่ก็เอามาวางในส่วนนี้ได้ แต่ก็ต้องดูใน code ด้วยว่ามีการอ้างอิงที่ถูกต้องหรือเปล่า
ในตัวอย่างนี้จะเป็น code การล๊อค (Protect) ทุก Sheets ใน Excel ที่กำลังทำงานอยู่ และ
ส่วนของการปลดล๊อค (Unprotect) ทุก Sheets ใน Excel ที่กำลังทำงานอยู่

Code :
Sub LockAllSheets() 
For n = 1 To Sheets.Count
Worksheets(n).Protect password:="159"
Next
MsgBox "All Lock OK"
End Sub

Sub UnlockAllSheet()
On Error GoTo Check_Error
Dim UNUN As String
UNUN = InputBox("กรุณาป้อนรหัสเพื่อปลดล๊อค", "ปลดล๊อค")
If UNUN = "" Then Exit Sub

For n = 1 To Sheets.Count
Worksheets(n).Unprotect (UNUN)
Next

Exit Sub

Check_Error:
Select Case Err.Number
Case 1004
UNUN = InputBox("Password ใน Sheet ที่ " & n & " ไม่ถูกต้อง" & vbCrLf & "กรุณาใส่ Password ใหม่" _
& vbCrLf & "กด Cancel หรือไม่ต้องพิมพ์ Password เพื่อยกเลิก", "Password ผิด")
If UNUN = "" Then Exit Sub
Resume
Case Else
MsgBox Err.Number & vbCrLf & Err.Description
Exit Sub
End Select
End Sub





4. จากนั้นให้ทำการบันทึก Excel โดยจะบันทึกเป็น "Excel Add-In (*.xlam)" 


เมื่อเลือกเป็น "Excel Add-In (*.xlam)" ตำแหน่งในการบันทึกไฟล์ก็จะเปลี่ยนเป็น "C:\Users\{User name}\AppData\Roaming\Microsoft\AddIns"
ให้ทำการตั้งชื่อ และกดบันทึกได้เลย 
ในตัวอย่างนี้ตั้งชื่อไฟล์ว่า "SampleLockButton.xlam"


ต่อไปเป็นขั้นตอนการเพิ่มปุ่ม Macro ที่เราได้ทำไว้เข้าไปใน Excel นะครับ

5. ไปที่แท๊บ "Developer" แล้วคลิ๊กที่ "Add-ins" จะได้หน้าต่าง Add-ins ขึ้นมา





6. จากนั้นให้คลิ๊กที่ "Browse" แล้วเลือก Add-ins ที่เราพึ่งได้สร้างไว้ (ในที่นี้คือ "SampleLockButton.xlam")


เมื่อมีรายการที่เราเพิ่มแสดงขึ้นมา ก็กดปุ่ม OK ได้เลย


7. จากนั้นให้กลับไปที่ Excel แล้วทำการคลิ๊กขวาในที่ว้างบน Ribbon tabs แล้วเลือก "Customize the Ribbon" จะได้หน้าต่าง Excel option ในส่วนการแก้ไข Ribbon tabs ขึ้นมา



ในส่วนการเพิ่มปุ่มเข้ามา เราสามารถเพิ่มไปที่แท๊บใหนก็ได้ หรือสร้างแท๊บขึ้นมาใหม่ก็ได้ 
อย่างในตัวอย่างนี้ได้สร้างแท๊บขึ้นมาเพิ่ม

8. ให้ทำการเปลี่ยนตัวเลือกใน "Choose comands from:" โดยเปลี่ยนเป็น "Macros"


9. ให้ทำการเลื่อนหา Macro ที่เราได้สร้างไว้ โดยชื่อ Macro ก็จะเป็นไปตามที่เราตั้งไว้คือ  LockAllSheets และ UnlockAllSheet
เมื่อเลือก Macro ที่เราสร้างไว้แล้ว ให้กด "Add > >" ตัว Macro ที่เราสร้างก็จะไปอยู่ใน Tab ด้านขวา




สามารถคลิ๊กขวาแล้วเลือก "Rename" เพื่อเปลี่ยน icon หรือ ชื่อปุ่มได้


เมื่อแก้ไขจนพอใจแล้วให้กดปุ่ม "OK"


ก็เป็นอันเสร็จสิ้นขั้นตอน ต่อไปเมื่อเปิด Excel ใหม่ หรือเปิด Excel เก่า ขึ้นมาก็จะสามารถใช้ฟังก์ชั่น Macro ที่เราได้เลยทันที



ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เทคนิคการสร้าง Folder ลับ (การซ่อน Folder) 2

เทคนิคการสร้าง Folder ลับ (การซ่อน Folder) 2 วันนี้ก็จะเอาเทคนิคการซ่อน Folder มาฝากกันเพิ่มเติมนะครับ จะต่างจากในบทความแรก https://lazedev.blogspot.com/2016/03/folder-folder.html ซึ่งเป็นการเก็บแบบ System file ธรรมดา โดยคราวนี้จะเพิ่มความสามารถให้ Folder ที่เราซ่อนไว้ให้เข้ายากขึ้นไปอีกนิด (ซ่อนได้เนียนขึ้น) นะครับ มาดูขั้นตอนกันเลย

Make BIG checkbox in Excel

ทำ Checkbox ขนาดใหญ่ใน Excel ในบางครั้งเมื่อเราต้องการทำฟอร์มเอกสารให้คนอื่นกรอก ก็มักจะมีตัว Checkbox เพื่อให้คลิ๊กเลือกในรายการที่เรากำหนดไว้ โดยจะเพิ่มจากตัว ActiveX control ที่มีอยู่แล้วใน Excel แต่ปัญหาคือเจ้าตัว checkbox นี้มันปรับขนาดไม่ได้ พอเราปรับขนาดหน้าจอเล็กลง เจ้าตัว checkbox นี่ก็จะเล็กลงตาม ทำให้ความไฮโซของแบบฟอร์มลดลงไป

เอา Password Excel VBA ออก

พอดีว่ากำลังทำโปรเจ็คฐานข้อมูลเกี่ยวกับ Excel VBA แต่ทำ ๆ ไปดันลืม พาสเวิดที่ตัวเองใส่ไว้ซะงั้น เลยต้องลำบากลำบนไปค้นหาวิธีการเอาพาสเวิดนั้นออก ดูไปแล้วก็พอมีวิธีอยู่ ก็เลยทำเป็นบทความเก็บไว้ดีกว่า มาดูกันเลย **เป็นการเอารหัสของ VBA ใน Excel ออกนะครับ ไม่ใช่รหัสของ Excel