การดึงโค้ด VBA จากเอกสาร Word 2007: คู่มือที่ครอบคลุม

เมื่อทำงานกับเอกสาร Word 2007 คุณอาจพบว่าต้องการ ดึงโค้ด VBA (Visual Basic for Applications) จากไฟล์ .docm โดยอัตโนมัติ สถานการณ์ทั่วไปคือการต้องการนำกลับมาใช้หรือแก้ไขโค้ดนี้ในเอกสารหรือแอปพลิเคชันอื่น ๆ นี่คือคู่มือที่ครอบคลุมเพื่อช่วยคุณในขั้นตอนนี้

ปัญหา: การดึงโค้ด VBA

คุณอาจรู้สึกสะดวกในการแทรกและลบโค้ดภายในเอกสาร Word แต่การดึงโค้ด VBA ที่แท้จริงมาในรูปแบบที่ใช้ได้อาจยุ่งยาก ข่าวดีคือการทำสิ่งนี้เป็นไปได้จริง และคู่มือนี้จะพาคุณผ่านขั้นตอนที่จำเป็น

วิธีแก้ปัญหาแบบขั้นตอน

1. การตั้งค่าสภาพแวดล้อมของคุณ

ก่อนที่คุณจะสามารถดึงโค้ด VBA ออกมา คุณจำเป็นต้องตรวจสอบให้แน่ใจว่าสภาพแวดล้อมของคุณได้รับการตั้งค่าอย่างถูกต้อง:

  • เพิ่มการอ้างอิง: ตรวจสอบให้แน่ใจว่าได้เพิ่มการอ้างอิงไปยัง Microsoft Visual Basic for Applications Extensibility 5.3 นี่เป็นสิ่งสำคัญสำหรับการโต้ตอบกับส่วนประกอบ VBA ในเอกสาร Word ของคุณ

  • เปิดใช้งานการเข้าถึงโมเดลวัตถุ VBA: ไปที่ Trust Center ในตัวเลือก Word และเปิดการเข้าถึงโมเดลวัตถุ VBA นี่เป็นสิ่งสำคัญสำหรับแอปพลิเคชันของคุณในการโต้ตอบกับโครงการ VBA ของ Word

2. การดึงโค้ด

ตอนนี้เรามาดูโค้ดที่อนุญาตให้คุณดึงโค้ด VBA ออกมา ด้านล่างเป็นการใช้งาน C# เพื่อดึงมาโครทั้งหมดจากไฟล์ .docm

using Microsoft.Office.Interop.Word;
using Microsoft.Vbe.Interop;
using System.Collections.Generic;

public List<string> GetMacrosFromDoc()
{
    Document doc = GetWordDoc(@"C:\Temp\test.docm");

    List<string> macros = new List<string>();
    
    VBProject prj;
    CodeModule code;
    string composedFile;

    prj = doc.VBProject;
    foreach (VBComponent comp in prj.VBComponents)
    {
        code = comp.CodeModule;

        // เพิ่มชื่อของโมดูลโค้ด
        composedFile = comp.Name + Environment.NewLine;

        // วนลูผ่านบรรทัดของโมดูลโค้ด
        for (int i = 0; i < code.CountOfLines; i++)
        {
            composedFile += code.get_Lines(i + 1, 1) + Environment.NewLine;
        }

        // เก็บมาโครไว้ในรายการ
        macros.Add(composedFile);
    }

    CloseDoc(doc);

    return macros;
}

3. ความเข้าใจในโค้ด

  • การเริ่มต้นรายการ: โค้ดเริ่มต้นรายการเพื่อเก็บมาโครที่ดึงมา

  • การเข้าถึงเอกสาร: วิธีการ GetWordDoc ถูกใช้ในการเข้าถึงเอกสาร Word ที่เฉพาะเจาะจง

  • วนลูผ่านส่วนประกอบ: โค้ดทำการวนลูผ่านแต่ละ VBComponent ใน VBProject ของเอกสาร เก็บบรรทัดของโค้ด

  • การจัดเก็บโค้ด: มันจะรวมชื่อของแต่ละส่วนประกอบและบรรทัดและจัดเก็บมันในรายการเพื่อใช้ในภายหลัง

4. การแสดงโค้ดที่ดึงออกมา

คุณอาจต้องการแสดงโค้ดที่ดึงออกมาหรือเก็บไว้ใช้งานในอนาคต คุณสามารถใช้กล่องข้อความหรือเขียนลงในเอกสารใหม่ ขึ้นอยู่กับว่าคุณวางแผนจะใช้โค้ดที่ดึงออกมาอย่างไร

Sub GetCode()
    Dim prj As VBProject
    Dim comp As VBComponent
    Dim code As CodeModule
    Dim composedFile As String
    Dim i As Integer

    Set prj = ThisDocument.VBProject
    For Each comp In prj.VBComponents
        Set code = comp.CodeModule
        
        composedFile = comp.Name & vbNewLine

        For i = 1 To code.CountOfLines
            composedFile = composedFile & code.Lines(i, 1) & vbNewLine
        Next

        MsgBox composedFile
    Next
End Sub

การใช้งาน VBA นี้จะสะท้อนถึงตรรกะของ C# แต่รันภายในเอกสาร Word โดยตรง

สรุป

การดึงโค้ด VBA จากเอกสาร Word 2007 อาจดูน่ากลัวในช่วงแรก แต่หากมีขั้นตอนที่ถูกต้องก็สามารถจัดการได้ง่าย โดยการติดตามขั้นตอนที่ระบุไว้ข้างต้น คุณสามารถเข้าถึงและนำกลับมาใช้มาโคร VBA ได้ตามต้องการ อย่าลืมตรวจสอบให้แน่ใจว่าสภาพแวดล้อมการพัฒนาของคุณได้รับการตั้งค่าอย่างถูกต้อง และอย่าลังเลที่จะสำรวจความสามารถเพิ่มเติมของทั้งโมเดลวัตถุ Word และ VBA เอง

หากคุณมีคำถามเพิ่มเติมหรือต้องการความช่วยเหลือ โปรดอย่าลังเลที่จะติดต่อ!