ฉันกำลังเขียน VSTO Add-in สำหรับ Excel และฉันสังเกตเห็นว่าถ้าฉันล็อคแผ่นงานและรหัสผ่านป้องกันมัน (ดังนั้นเฉพาะ Add-in ของฉันเท่านั้นที่สามารถเขียนลงไปได้ แต่ผู้ใช้สามารถดูได้) หากผู้ใช้พยายามแก้ไข แผ่นงานที่พวกเขาได้รับป๊อปอัป "แผ่นงานนี้ถูกล็อค" หากในขณะที่พร้อมท์นั้นยังคงรอการป้อนข้อมูลของผู้ใช้ Add-in จะพยายามเขียนลงในแผ่นงาน Excel จะหยุดทำงาน การเขียนลงในชีตเกี่ยวข้องกับการยกเลิกการปกป้อง การเขียนข้อมูล แล้วล็อคอีกครั้ง Add-in จะจับข้อมูลจากแหล่งภายนอกผ่านพอร์ตอนุกรม เพื่อให้สามารถเขียนข้อมูลได้ตลอดเวลา
วิธีสร้างใหม่: 1. ล็อคแผ่นด้วย Add-in 2. ผู้ใช้พยายามแก้ไขเนื้อหาชีต 3. ผู้ใช้ได้รับแจ้งว่าไม่สามารถแก้ไขเนื้อหาของชีตได้เนื่องจากถูกล็อค 4. ข้อมูลเข้ามาในพอร์ตอนุกรมและ Add-in จะพยายามปลดล็อก เขียนข้อมูล และล็อกแผ่นงานก่อนที่ผู้ใช้จะมีโอกาสตอบรับพร้อมท์ที่ถูกส่งออกไป 5. Excel ไบต์ฝุ่น
มีข้อเสนอแนะอะไรบ้าง? ฉันกำลังเล่นกับแนวคิดในการรักษาแผ่นงาน "ต้นแบบ" ที่ซ่อนอยู่และแผ่นงานที่มองเห็นได้ และเพียงใช้สูตร Excel หรือช่วงที่มีชื่อเพื่ออ้างอิงแผ่นงานที่ซ่อนอยู่ อย่างไรก็ตาม สิ่งนี้จะเปิดกว้างสำหรับการแก้ไขและข้อมูลที่อาจเกิดความเสียหายโดยผู้ใช้ ข้อมูลจะต้องไม่สามารถแก้ไขได้มากที่สุด
อัปเดต: ฉันจะพอใจกับการจับ COMException ดังนั้นมันจึงไม่ฆ่า Excel แต่ดูเหมือนว่า "catch (Exception ex)" ทั่วไปจะไม่ช่วยอะไร