วันศุกร์ที่ 20 พฤษภาคม พ.ศ. 2554

การหา idMso ของ Excel สำหรับการแก้ไข หรือสร้าง Ribbon

เคยพูดเรื่องการปรับแต่งริบบิ้นของ Office มาครั้งหนึ่งแล้ว โดยเป็นการพูดเรื่องของ ริบบิ้นของ Access คราวนี้ เป็นเรื่องของ Excel บ้าง

Excel 2007-2010 ก็สามารถปรับแต่งริบบิ้นได้ เช่นเดียวกัน โดยสร้างไฟล์เป็น XML และนำไปไว้ในไฟล์ของ Excel ที่ต้องการปรับริบบิ้น รายละเอียด ดูที่ http://www.rondebruin.nl/ribbon.htm

ประเด็นวันนี้คือ ถ้าต้องการปรับแต่ง คำสั่งหรือปุ่มบนริบบิ้น ต้องทราบ idMso ของคำสั่งต่าง ๆ จะหาได้จากที่ไหน ผมค้นอยู่ในอินเทอร์เน็ต ตั้งนาน จึงพบ

วิธีหาว่า idMso ทั้งหมดของ Excel ให้ทำดังนี้
1. เปิด Excel 2007 หรือ 2010
2. ไปคลิกปุ่ม เพื่อเพิ่มคำสั่งใน ปุ่มเครื่องมือด่วน หรือ Quick Access Toolbar
3.คลิก คำสั่งเพิ่มเติม
4. หาคำสั่งที่ต้องการทราบ idMso
5. นำเมาส์ไปวาง จะเห็นชื่อ idMso ของคำสั่งนั้น ๆ อยู่ในวงเล็บ

ข้างล่างนี้คือตัวอย่าง xml ที่กำหนดให้ปุ่ม วาง (Paste) ล้างทั้งหมด(ClearAll) ล้างรูปแบบ(ClearFormats) และล้างข้อคิดเห็น(ClearComments) ไม่ให้ทำงาน

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<commands>
<command idMso="Paste" enabled = "false"/>
<command idMso="ClearAll" enabled = "false"/>
<command idMso="ClearFormats" enabled = "false"/>
<command idMso="ClearComments" enabled = "false"/>
</commands>
</customUI>

และถ้าต้องการ ห้ามไม่ให้ใช้ Keyboard Shortcut เช่น Ctrl+V ต้องใช้ VBA ช่วยตรวจสอบ การกดปุ่ม และแสดง MsgBox ให้ทราบ รายละเอียด การสั่งไม่ให้ใช้ Keyboard shortcut ดูได้ ที่นี่

ถามว่า ทำไมจึงต้องกำหนดไม่ให้ปุ่มพวกนี้ทำงาน

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

ผมทำแผ่นงาน การวิเคราะห์ข้อสอบ โดยมีการจำกัดไม่ให้วาง (Paste) เพื่อป้องกันไม่ให้รูปแบบเซลล์ที่จัดไว้เสียหาย คลิกดูได้ ที่นี่

สำหรับใน Access 2007 หรือ 2010

1. ถ้าเป็น 2007 ให้ไปที่ ปุ่ม Office และเลือก ตัวเลือกของ Access แต่ถ้าเป็น 2010 ให้เลือก แฟ้ม และตัวเลือก
2. เลือกแถบ กำหนดเอง จะเห็นมีคำสั่งต่าง ๆ
3. นำเมาส์ไปวางที่คำสั่ง จะเป็น idMso อยู่ในวงเล็บ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น