การดึงโค้ด 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 เอง
หากคุณมีคำถามเพิ่มเติมหรือต้องการความช่วยเหลือ โปรดอย่าลังเลที่จะติดต่อ!