เทคโนโลยีการผสมผสานระหว่าง Delphi และ Word
1. ความหมายของโค้ด VBA
Microsoft Word คือสภาพแวดล้อมแบบผสานรวมและระบบประมวลผลคำของ Microsoft Corporation ในสหรัฐอเมริกา อย่างไรก็ตาม ไม่ได้เป็นเพียงระบบประมวลผลคำเท่านั้น แต่ยังรวม Microsoft Visual Basic ไว้ด้วยและสามารถขยายฟังก์ชันของ Word ผ่านการเขียนโปรแกรมได้
รหัสของ Microsoft Visual Basic ใน Word คือมาโครของ Word คุณสามารถตระหนักถึงการทำงานอัตโนมัติของการประมวลผลเอกสารบางอย่าง เช่น การสำรองข้อมูลอัตโนมัติและการบันทึกเอกสาร ฯลฯ ซึ่งสามารถขยายฟังก์ชันของเอกสาร Word ได้ ดังนั้น คุณสามารถใช้คุณลักษณะต่างๆ ของ Word ได้อย่างเต็มที่ แม้กระทั่งทำให้ Word เป็นส่วนหนึ่งของซอฟต์แวร์ของตัวเองก็ตาม
มาโครของ Word มีประโยชน์บางประการ เนื่องจากสามารถช่วยให้เราสร้างเอกสารอัตโนมัติได้ แต่มาโครของ Word ไม่ได้เป็นประโยชน์อย่างแท้จริง บางครั้งมาโครเหล่านี้อาจเป็นอันตรายต่อเอกสาร ระบบคอมพิวเตอร์ และแม้แต่เครือข่ายของเรา โดยเริ่มจากไวรัสมาโคร NO1 ของไต้หวัน ไวรัสมาโคร Melissa ในปัจจุบันได้หายไปจาก พรอมต์ง่ายๆ ที่จุดเริ่มต้นในการสิ้นเปลืองทรัพยากรระบบในการส่งอีเมลแบบสุ่ม การส่งข้อมูลส่วนบุคคลไปยังเครือข่าย และแม้กระทั่งไปยัง Autoexec.bat (ไฟล์แบตช์อัตโนมัติ) บนฮาร์ดดิสก์ -y ทำลายระบบ Windows ทั้งหมด
2. เทคโนโลยี Com ที่ฝังอยู่ใน Word
อาจกล่าวได้ว่า Word เป็นซอฟต์แวร์ที่รองรับเทคโนโลยี COM ได้ดีที่สุด ดูเหมือนว่าจะรุนแรงเกินไปที่จะพูดแบบนี้ แต่เทคโนโลยีอินเทอร์เฟซการเขียนโปรแกรมอันทรงพลังที่ Word มอบให้ช่วยให้เราสามารถควบคุมส่วนใดๆ ของ Word ผ่านโปรแกรมได้ ไม่ว่าจะเป็นการเปิด บันทึก การพิมพ์ หรือการวาดตารางในเอกสารโดยอัตโนมัติ
ด้วยซอฟต์แวร์การเขียนโปรแกรม คุณสามารถจัดการคำศัพท์ได้อย่างยืดหยุ่น ในที่นี้เราใช้เฉพาะ Borland Delphi เป็นตัวอย่างในการอธิบายโดยละเอียด:
1. วิธีเรียกซอฟต์แวร์/ไฟล์ Word ใน Delphi
มีสามวิธีในการเรียกซอฟต์แวร์ Word ใน Word:
- การฝัง Word ผ่านการควบคุม TOleContainer ของ Delphi
ก. ใช้การควบคุมเซิร์ฟเวอร์ที่ Delphi ให้ไว้เพื่อเรียก Word และใช้คุณสมบัติของ Word
b. ผ่านเทคโนโลยี Real Com ให้นำเข้าไลบรารีคลาสทั้งหมดในไฟล์ MSWORD9.OLB ในไดเร็กทอรีซอฟต์แวร์ Office ไปยัง Delphi และใช้เทคโนโลยี Com เพื่อเขียนโปรแกรม
ค. ใช้ CreateOleObject เพื่อเริ่ม Word แล้วควบคุม Word ในโหมด Ole
2. การตัดสินความยากของวิธีการต่างๆ
ก. ฝัง Word ผ่านการควบคุม Delphi TOleContainer
นี่เป็นวิธีฝัง Ole ที่ง่ายที่สุด ซึ่งสามารถเรียกเอกสาร Word ได้โดยตรง คุณเพียงแค่ใช้ ToleContainer.Run เพื่อเริ่มเอกสาร Word โดยตรง และเอกสาร Word ที่เริ่มต้นด้วยวิธีนี้จะรวมเข้ากับโปรแกรม Delphi (จากมุมมองของอินเทอร์เฟซ) แต่มีข้อบกพร่องที่ผ่านไม่ได้นั่นคือเอกสาร Word ไม่สามารถควบคุมผ่าน Delphi ได้และวัตถุประสงค์ของการจัดการ Word อย่างยืดหยุ่นไม่สามารถทำได้ สามารถทำได้
ข. ใช้การควบคุมเซิร์ฟเวอร์ที่ Delphi ให้ไว้เพื่อเรียก Word และใช้คุณสมบัติของ Word
ใช้การควบคุมเซิร์ฟเวอร์ของ Delphi เพื่อควบคุม Word Delphi สามารถใช้คำสั่งโค้ดระหว่างการเขียนโปรแกรมได้ โดยทั่วไปแล้ว จะสามารถรับรู้ถึงการควบคุม Word ของ Delphi ได้ดีขึ้น อย่างไรก็ตาม ยังมีฟังก์ชันบางอย่างของ Word ที่ไม่สามารถเรียกใช้ใน Delphi ได้ (เช่น VBA ที่เขียนด้วยตัวเอง ) รหัสมาโคร) และหากเดิมทีฟังก์ชันนี้เป็นทางเลือกในโค้ด VBA จะต้องเพิ่มพารามิเตอร์เมื่อเรียก Delphi มิฉะนั้นแม้แต่การคอมไพล์ก็จะไม่ผ่าน โปรแกรม Word และ Delphi ที่เริ่มต้นด้วยวิธีนี้อยู่ในสองรูปแบบตามลำดับ วิธีการนี้สามารถใช้เป็นข้อมูลอ้างอิงเท่านั้น
ค ใช้เทคโนโลยี Real Com เพื่อนำเข้าไลบรารีคลาสทั้งหมดในไฟล์ MSWORD9.OLB ในไดเร็กทอรีซอฟต์แวร์ Office ไปยัง Delphi ใช้เทคโนโลยี Com ในการเขียนโปรแกรม ใช้เทคโนโลยี Com จริงเพื่อนำเข้าไลบรารีคลาสไฟล์ MsWord9.OLD จากนั้นใช้ Com เทคโนโลยีในการใช้งานโปรแกรม โดยรวมแล้วจะคล้ายกับการใช้การควบคุมเซิร์ฟเวอร์ของ Delphi ซึ่งจะยุ่งยากกว่าการควบคุมเซิร์ฟเวอร์เล็กน้อย ข้อดีและข้อเสียจะเหมือนกับการควบคุมเซิร์ฟเวอร์
d. ใช้ CreateOleObject เพื่อเริ่ม Word แล้วควบคุม Word ในโหมด Ole
วิธีนี้คือการใช้วิธี CreateOleObjects ในการเรียก Word ซึ่งจริงๆ แล้วคือ Ole แต่วิธีนี้สามารถควบคุมไฟล์ Word ได้อย่างเต็มที่ และใช้คุณสมบัติทั้งหมดของ Word รวมถึงโค้ดแมโคร VBA ที่เขียนด้วยตัวเองด้วย
เมื่อเปรียบเทียบกับการควบคุมเซิร์ฟเวอร์และเทคโนโลยี COM วิธีการนี้สามารถใช้คุณสมบัติต่างๆ ของ Word ได้อย่างแท้จริง โดยพื้นฐานแล้วจะเหมือนกับการเขียนโค้ดของคุณเองใน VBA และไม่จำเป็นต้องใช้โค้ดเริ่มต้น โปรแกรม Word และ Delphi ที่เริ่มต้นด้วยวิธีนี้อยู่ในสองรูปแบบตามลำดับ ข้อเสียคือไม่มีรหัส Delphi เมื่อใช้วิธีการนี้ จะต้องเขียนการจัดการข้อยกเว้นทั้งหมดด้วยตนเอง และอาจมีความรู้เชิงสำรวจเพิ่มเติมเมื่อเขียน
3. โปรแกรมแก้ไขแมโคร Word
Word สามารถแก้ไขโค้ด VBA และเขียนแบบฟอร์มและฟังก์ชันได้อย่างแท้จริง
วิธีเข้าสู่โปรแกรมแก้ไขแมโคร Word: เครื่องมือ -> มาโคร -> Visual Basic Editor เพื่อเข้าสู่อินเทอร์เฟซตัวแก้ไข Visual Basic อินเทอร์เฟซตัวแก้ไข Visual Basic ของ Word โดยพื้นฐานแล้วเหมือนกับตัวแก้ไข Visual Basic จริง และจะไม่อธิบายรายละเอียดที่นี่ ในโค้ด VBA คุณสามารถเพิ่มแบบฟอร์มผู้ใช้ โมดูล และโมดูลคลาสได้ แนวคิดของแบบฟอร์มผู้ใช้ โมดูล และโมดูลคลาสจะเหมือนกับแนวคิดใน Visual Basic ทุกประการ ความคิดเห็นก็เหมือนกับใน Visual Basic ทุกประการ
คุณสามารถวางเคอร์เซอร์บนรูทีนย่อยของฟอร์มหรือโมดูล และกด "F5" โดยตรงเพื่อรันรูทีนย่อยปัจจุบัน
4. ภาพรวมของแมโคร Word
Word รวมการแก้ไขเอกสารและ VB เข้าด้วยกันเพื่อทำให้เอกสารเป็นอัตโนมัติอย่างแท้จริง การเขียนโปรแกรมโดยใช้ Word นั้นคล้ายคลึงกับการใช้ Visual Basic ความแตกต่างก็คือใน Word คุณสามารถรันรูทีนย่อยบางตัวได้โดยตรงและดูผลลัพธ์ได้โดยตรง มาโครของ Word สามารถตีความและรันได้เท่านั้น ในขณะที่ Visual Basic สามารถเขียนลงในโปรแกรมจริงได้ จากมุมมองของการป้องกันโค้ด ควรลดจำนวนโค้ด VBA ใน Word ให้มากที่สุด โดยเฉพาะโค้ดคีย์
มาโคร VBA สามารถแบ่งออกเป็นสี่ประเภท:
1. มาโครที่มีชื่อเดียวกับคำสั่ง
เช่น FileSave, FileOpen หากโค้ด VBA มีฟังก์ชันที่มีชื่อเดียวกันกับ Word รหัส VBA เหล่านี้จะถูกดำเนินการโดยตรง โดยไม่สนใจคำสั่งของ Word เอง
2. มาโครเฉพาะใน Word
มาโครเหล่านี้ประกอบด้วย AutoExec (การเริ่ม Word หรือการโหลดเทมเพลตส่วนกลาง), AutoNew (แต่ละครั้งที่มีการสร้างเอกสารใหม่), AutoOpen (แต่ละครั้งที่มีการเปิดเอกสารที่มีอยู่), AutoClose (แต่ละครั้งที่เอกสารถูกปิด), AutoExit (ออกจาก Word หรือ กำลังยกเลิกการโหลดเทมเพลตส่วนกลาง) ชั่วโมง)
หากโค้ด VBA มีฟังก์ชันที่มีชื่อเหล่านี้ โค้ดที่เกี่ยวข้องจะถูกดำเนินการโดยอัตโนมัติหากตรงตามเงื่อนไขที่เกี่ยวข้อง
3. แมโคร VBA สำหรับเหตุการณ์ที่เกี่ยวข้อง
มาโครเหล่านี้เป็นมาโครที่ถูกทริกเกอร์โดยเหตุการณ์ ตัวอย่างเช่น Document_Close จะทริกเกอร์เหตุการณ์เมื่อเอกสารถูกปิด Document_New จะทริกเกอร์เมื่อมีการสร้างเอกสารใหม่ และ Document_Open จะทริกเกอร์เมื่อเอกสารถูกเปิด
4. มาโครอิสระ
โค้ด VBA ที่คุณเขียนเอง นั่นคือโค้ด VBA ที่ไม่อยู่ในสถานการณ์ข้างต้น สามารถเรียกได้ด้วยโค้ด VBA อื่น และที่สำคัญกว่านั้นคือสามารถเรียกโดยโปรแกรมอื่นได้
ด้วยวิธีนี้ เราสามารถละทิ้งแมโครที่ดำเนินการโดย Word โดยอัตโนมัติ และเรียกแมโครที่เกี่ยวข้องโดยตรงผ่าน Delphi เพื่อให้บรรลุเป้าหมาย
[b]5. คำอธิบายโดยละเอียดของมาโครคำสั่ง Word[/b]
Word นั้นมีฟังก์ชันคำสั่งมากมาย แต่ไม่มีวิธีใช้ออนไลน์ของ Word หรือ MSDN ที่ช่วยแนะนำแง่มุมนี้ ดังนั้นคุณจึงสามารถสำรวจได้ผ่านการทดลองของคุณเองเท่านั้น ฟังก์ชันที่สำรวจในตอนแรกมีดังนี้:
ความเห็นคำอธิบายชื่อมาโคร
ไฟล์ใหม่ ใหม่
FileNewDefault สร้างเอกสารเปล่าใหม่
FileSaveAs บันทึกเป็น
FileOpen เปิด
FileCloseClose
พิมพ์ FilePRint
ตัวอย่างก่อนพิมพ์ FilePrintPreview
เครื่องมือปรับแต่งการปรับแต่งในแถบเครื่องมือ
ToolsOptions ตัวเลือกเครื่องมือ
ToolsRevisions เน้นการแก้ไข
ToolsReviewRevisions ยอมรับหรือปฏิเสธการแก้ไข
ToolsRevisionMarksAccept ยอมรับการแก้ไข
ToolsRevisionMarksReject ปฏิเสธการแก้ไข
ToolsRevisionMarksสลับการแก้ไข
เครื่องมือมาโครมาโคร
ToolsRecordMacroToggle บันทึกแมโครใหม่
ดูการรักษาความปลอดภัย
ViewVBCode ดูสภาพแวดล้อมตัวแก้ไข VB
เทมเพลต FileTemplates และส่วนเสริม
ToolsProtectUnprotectDocument ยกเลิกการป้องกันเอกสาร
แทรกไฮเปอร์ลิงก์ แทรกไฮเปอร์ลิงก์
แก้ไขไฮเปอร์ลิงก์ แก้ไขไฮเปอร์ลิงก์
ลบไฮเปอร์ลิงก์ ลบไฮเปอร์ลิงก์
แก้ไขลิงก์ ดูและลบลิงก์
EditPasteAsHyperlink วางไฮเปอร์ลิงก์
รูปแบบสไตล์สไตล์
แก้ไขบุ๊กมาร์ก BookMark
รหัสบางส่วนที่ใช้ใน OleWord
1. โปรแกรม Delphi เริ่ม Word
ใช้เมธอด CreateOleObjects เพื่อเริ่ม Word และเรียกใช้โค้ด VBA กระบวนการใช้งานเฉพาะคือ:
ขั้นแรกให้ใช้ GetActiveObject('Word.application') เพื่อตรวจสอบว่ามีโปรแกรม Word ในหน่วยความจำปัจจุบันหรือไม่ ถ้ามี ให้เชื่อมต่อโดยตรง หากไม่มีโปรแกรม Word ให้ใช้ CreateOleObject('Word.Application') เพื่อเริ่ม Word
2. โปรแกรม Delphi สร้างเอกสาร Word ใหม่
รูปแบบ: WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)
เทมเพลต: ชื่อของเทมเพลตที่จะใช้
เทมเพลตใหม่: ประเภทของเอกสารใหม่ True แสดงถึงเทมเพลต False แสดงถึงเอกสาร
DocumentType: ประเภทเอกสาร ค่าเริ่มต้นคือเอกสารเปล่า
มองเห็นได้: มองเห็นหน้าต่างที่กู้คืนหรือไม่
ตัวอย่าง: Doc_Handle:=Word_Ole.Documents.Add(Template:='C:/Temlate.dot',NewTemplate:=False);
3. โปรแกรม Delphi เปิดเอกสาร Word
รูปแบบ: WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,
เทมเพลตรหัสผ่าน, Revent, เขียนรหัสผ่านเอกสาร, WritePassWordTemplate,
รูปแบบ, การเข้ารหัส, มองเห็นได้)
ชื่อไฟล์: ชื่อเอกสาร (รวมถึงเส้นทาง)
ยืนยันการแปลง: จะแสดงกล่องโต้ตอบการแปลงไฟล์หรือไม่
อ่านอย่างเดียว: จะเปิดเอกสารในโหมดอ่านอย่างเดียวหรือไม่
AddToRecentFiles: จะเพิ่มไฟล์ลงในรายการไฟล์ที่ใช้ล่าสุดที่ด้านล่างของเมนูไฟล์หรือไม่
PassWordDocument: รหัสผ่านที่จำเป็นในการเปิดเอกสารนี้
เทมเพลตรหัสผ่าน: รหัสผ่านที่จำเป็นในการเปิดเทมเพลตนี้
เปลี่ยนกลับ: หากมีเอกสารอยู่แล้ว ไม่ว่าจะเปิดใหม่หรือไม่
WritePasswordDocument: ต้องใช้รหัสผ่านเพื่อบันทึกการเปลี่ยนแปลงเอกสาร
WritePasswordTemplate: บันทึกรหัสผ่านที่จำเป็นสำหรับการเปลี่ยนแปลงเทมเพลต
รูปแบบ: ตัวแปลงไฟล์ที่จำเป็นในการเปิดเอกสาร
การเข้ารหัส: หน้ารหัสเอกสารที่ใช้
มองเห็นได้: มองเห็นหน้าต่างที่เปิดเอกสารหรือไม่
ตัวอย่าง:
Doc_Handle:=Word_Ole.Documents.open(ชื่อไฟล์:=Doc_File,ReadOnly:=False,
AddToRecentFiles:=เท็จ);
4. โปรแกรม Delphi เพื่อบันทึกเอกสาร Word
รูปแบบ: WordDocuments.SaveAs (ชื่อไฟล์, รูปแบบไฟล์, LockComments, รหัสผ่าน,
AddToRecentFiles, WritePassword, ReadOnlyRecommended,
EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData,
บันทึกเป็นAOCELetter)
ชื่อไฟล์: ชื่อไฟล์. ค่าเริ่มต้นเป็นโฟลเดอร์และชื่อไฟล์ปัจจุบัน
FileFormat รูปแบบในการบันทึกเอกสาร
LockComments หากเป็นจริง อนุญาตให้แสดงความคิดเห็นเท่านั้นในเอกสารนี้
รหัสผ่าน รหัสผ่านเมื่อเปิดเอกสาร
AddToRecentFiles ถ้าเป็น True จะเพิ่มเอกสารลงในรายการเอกสารที่ใช้ล่าสุดในเมนูไฟล์
WritePassword บันทึกรหัสผ่านที่จำเป็นสำหรับการเปลี่ยนแปลงเอกสาร
ReadOnlyRecommended ถ้าเป็น True Word จะแนะนำโหมดอ่านอย่างเดียวทุกครั้งที่เปิดเอกสาร
EmbedTrueTypeFonts หากเป็น True ให้บันทึกเอกสารด้วยแบบอักษร TrueType
SaveNativePictureFormat หากเป็น True กราฟิกที่นำเข้าจากแพลตฟอร์มระบบอื่น (เช่น Macintosh) จะบันทึกเฉพาะเวอร์ชัน Windows เท่านั้น
SaveFormsData หากเป็นจริง ข้อมูลที่ผู้ใช้ป้อนในแบบฟอร์มจะถูกบันทึกเป็นบันทึกข้อมูล
SaveAsAOCELetter หากเอกสารมีสิ่งที่แนบมา เมื่อคุณสมบัตินี้เป็น True ให้บันทึกเอกสารเป็นตัวอักษร AOCEL (และบันทึกอีเมล)
ตัวอย่าง:
Word_Ole.Documents.SaveAs (ชื่อไฟล์:=Doc_File,FileFormat=wdFormatDocument,
AddToRecentFiles=เท็จ);
5. อ่านไฟล์จากฐานข้อมูลไปยังฮาร์ดดิสก์ในเครื่องและอ่านไฟล์จากฮาร์ดดิสก์ในเครื่องไปยังฐานข้อมูล
ใช้ฟิลด์ Image binary เพื่อบันทึกลงในฐานข้อมูลและใช้วิธีการ Stream
สร้างสตรีมไฟล์:
Word_FileStream:=TFileStream.Create(Target_Name,fmOpenWrite หรือ fmCreate);
Word_FileStream.ตำแหน่ง:=0;
ฟิลด์รูปภาพที่บันทึกลงในฐานข้อมูล:
TBlobField(AdoQuery1.FieldByName(Column_Name)).SaveToStream(Word_FileStream);
อ่านไฟล์จากฐานข้อมูลไปยังฮาร์ดดิสก์ในเครื่อง:
TBlobField(ADOQuery1.FieldByName(Column_Name)).loadfromStream(Word_FileStream);
ปล่อยสตรีมไฟล์:
Word_FileStream.ฟรี;
6. คำจำกัดความของข้อความระดับโลก
เนื่องจากโปรแกรม word และ Delphi เป็นซอฟต์แวร์สองตัว จึงเป็นเรื่องยากในการสื่อสารระหว่างกัน ดังนั้นจึงใช้วิธีการส่งข้อความทั่วโลก ต้องลงทะเบียนข้อความส่วนกลางก่อน และ Windows จะส่งคืนหมายเลขข้อความว่างของระบบ เมื่อข้อความที่ลงทะเบียนเหมือนกัน ระบบ Windows จะส่งคืนค่าเดียวกัน ดังนั้นจึงมั่นใจได้ว่าหมายเลขข้อความนี้จะใช้ในการสื่อสารระหว่างสองโปรแกรม
วิธีกำหนดข้อความ:
szMessageString: pchar = 'XIDIAN_11_Stone';
FMyJoinMessage := RegisterWindowMessage(szMessageString);
วิธีส่งข้อความ:
SendMessage (ตัวจัดการอื่น ข้อความ ข้อความมาพร้อมกับตัวแปรแบบสั้น ข้อความมาพร้อมกับตัวแปรแบบยาว)
7. โปรแกรม Delphi รับข้อความอย่างไร
Delphi ได้รับข้อความสองประเภท ประเภทแรกคือการโอเวอร์โหลดข้อความเฉพาะ และอีกประเภทคือการโอเวอร์โหลดฟังก์ชัน WndProc และเลือกข้อความที่เกี่ยวข้องสำหรับการประมวลผล
วิธีที่ 1 สามารถประมวลผลได้ครั้งละหนึ่งข้อความเท่านั้น ในขณะที่วิธีที่ 2 สามารถประมวลผลหลายข้อความพร้อมกันได้
สำหรับวิธีที่สอง คำสั่งจะเป็นดังนี้:
ขั้นตอน WndProc (ข้อความ var: Tmessage); แทนที่
จะต้องสังเกตว่าเมื่อใช้งานคุณจะต้องสืบทอดฟังก์ชัน WndProc (ข้อความ) หลังจากประมวลผลข้อความของคุณเองมิฉะนั้นระบบจะพัง!
8. การสร้างกล่องโต้ตอบ Combo แบบไดนามิกและเหตุการณ์การเปลี่ยนแปลงใน Word
สร้างโมดูลคลาส Combohander และกำหนดเหตุการณ์ภายใน
สาธารณะ WithEvents ComboBoxEvent เป็น Office.CommandBarComboBox
โมดูลที่กำหนดเหตุการณ์ที่สร้างโดยการควบคุมคำสั่งผสม
Dim ctlComboBoxHandler เป็น ComboBoxHandler ใหม่
สร้างกล่องโต้ตอบคำสั่งผสม
ตั้งค่า Cbo_ChooseDoc = CommandBars("Added Menu").Controls.Add(Type:=msoControlComboBox, Temporary:=True)
ตั้งค่าตัวจัดการไฟล์เพื่อสร้างเหตุการณ์ Combo_Change
ตั้งค่า ctlComboBoxHandler.ComboBoxEvent = Cbo_ChooseDoc
หลังจากสร้างเหตุการณ์แล้ว ให้เลือก Change event of ComboBoxEvent ในคลาสโมดูล Combohander เพื่อเขียนโค้ดเหตุการณ์
ComboBoxEvent_Change ย่อย (ByVal Ctrl เป็น Office.CommandBarComboBox)
9. เหตุการณ์ Word บางอย่าง
เหตุการณ์ Word ที่จัดการในโค้ด VBA คือ: Document_Close
สิ่งที่ต้องประมวลผลในเหตุการณ์แอปพลิเคชันคือ: DocumentBeforeClose, DocumentChange
Document_Close: เหตุการณ์สร้างเหตุการณ์เมื่อเอกสารถูกปิด
DocumentBeforeClose: ก่อนที่เอกสารจะถูกปิด Word จะกำหนดว่าเอกสารจะถูกบันทึก ให้พร้อมท์ที่เกี่ยวข้อง และดำเนินการประมวลผลที่เกี่ยวข้องหรือไม่
DocumentChange: การสลับเอกสาร เหตุการณ์จะถูกสร้างขึ้นเมื่อมีการสลับเอกสารระหว่างเอกสารที่แก้ไขโดยตนเองและเอกสารที่ผู้อื่นแก้ไขโดยส่วนใหญ่จะจัดการการตั้งค่าสิทธิ์ของเอกสาร ฯลฯ