ดังนั้นฉันจึงต้องการบันทึกคำสั่งคีย์บางส่วนในส่วนเสริม Excel VSTO ระดับเอกสารของเรา ดูเหมือนฉันจะหาวิธีทำไม่ได้ นอกจากใช้ VBA และให้ Addin พูดคุยกับ VBA ความช่วยเหลือ / ตัวอย่างใด ๆ ที่จะได้รับการชื่นชมอย่างมาก
ฉันใช้ Excel 2007
ดังนั้นฉันจึงต้องการบันทึกคำสั่งคีย์บางส่วนในส่วนเสริม Excel VSTO ระดับเอกสารของเรา ดูเหมือนฉันจะหาวิธีทำไม่ได้ นอกจากใช้ VBA และให้ Addin พูดคุยกับ VBA ความช่วยเหลือ / ตัวอย่างใด ๆ ที่จะได้รับการชื่นชมอย่างมาก
ฉันใช้ Excel 2007
คุณสามารถทำได้ผ่านการเรียก API ไปยังคลาสย่อย Excel และดูคำสั่งหลักเท่านั้น นี่คือ เก่ากว่าแต่ก็ยังใช้อยู่
วิธีหนึ่งเกี่ยวข้องกับการใช้โซลูชันของบุคคลที่สามจาก Addin-Express ผลิตภัณฑ์ของพวกเขารวมถึงความสามารถในการเพิ่มแป้นพิมพ์ลัดเป็นคุณสมบัติให้กับคำสั่งเมนู Ribbon
อีกวิธีหนึ่งคือการใช้ hooks ของแป้นพิมพ์ระดับต่ำผ่านทาง Win32 API บางตัวซึ่งโดยทั่วไปเรียกว่า คลาสย่อยของ windows นี่คือคำอธิบายที่ดีเยี่ยมพร้อมตัวอย่างโค้ดเกี่ยวกับวิธีการดำเนินการ โปรดทราบว่าสิ่งเดียวที่ "พิเศษ" ที่คุณต้องทำเพื่อให้โค้ดนี้เป็น "ทำงาน" ใน VSTO คือการย้ายวิธี SetHook()
ไปยังเหตุการณ์ Startup
และวิธี UnhookWindowsHookEx() ไปยังเหตุการณ์ Shutdown
ในที่สุดก็มีการใช้คุณสมบัติ OnAction
ของคลาส Addin วิธีนี้ต้องใช้ VBA บางอย่าง (ในแง่ของวิธีการโทรกลับที่ชี้กลับไปยัง .net addin พื้นฐาน) และใช้งานได้ตราบใดที่คุณยินดีที่จะแจกจ่าย VBA บางส่วนในโซลูชันของคุณ ( เช่น xls หรือ doc พร้อมโปรเจ็กต์ vba หรืออาจเป็น Addin แบบเนทีฟ) โปรดทราบว่าคุณจะต้องทำเครื่องหมาย comvisible = true
และเปิดเผยวิธีการ GetAutomationServiceObject
เพื่อให้ VBA ของคุณสามารถอ้างอิง Addin ของคุณจากโค้ด VBA