ทำงานกับ VBA Macro ใน C#

VBA (Visual Basic for Applications) เป็นภาษาโปรแกรมที่ใช้ในไฟล์ MS Excel เพื่อทำให้สเปรดชีตทำงานโดยอัตโนมัติ แมโคร VBA ใช้เพื่อเขียนฟังก์ชันที่ผู้ใช้กำหนด ซึ่งช่วยให้คุณเร่งงานที่ต้องทำด้วยตนเองได้ ในบทความนี้ คุณจะได้เรียนรู้วิธีการทำงานกับแมโคร VBA ในไฟล์ MS Excel โดยทางโปรแกรม ในตอนท้ายของบทความนี้ คุณจะสามารถแยก เพิ่ม และแก้ไขแมโคร VBA ในสมุดงาน Excel โดยใช้ C#

ทำงานกับมาโคร VBA ในไฟล์ Excel - C# API

Aspose.Cells for .NET เป็นไลบรารีคลาส C# ที่ออกแบบมาเพื่อจัดการสเปรดชีตโดยอัตโนมัติจากภายในแอปพลิเคชัน .NET API มีคุณลักษณะมากมายที่ช่วยให้คุณสามารถสร้าง แก้ไข และแปลงสมุดงาน MS Excel นอกจากนี้ API ยังทำให้สามารถทำงานกับมาโคร VBA ได้อย่างราบรื่น Aspose.Cells for .NET มีให้สำหรับ ดาวน์โหลด เป็นไฟล์ DLL และโฮสต์บน NuGet

PM> Install-Package Aspose.Cells

แยกมาโคร VBA จากไฟล์ Excel โดยใช้ C

เริ่มต้นด้วยการแยกแมโคร VBA จากสมุดงาน Excel ที่มีอยู่ ต่อไปนี้เป็นขั้นตอนในการดำเนินการนี้

  • สร้างวัตถุของคลาส Workbook เพื่อโหลดไฟล์ Excel
  • เข้าถึงแต่ละโมดูล VBA จากคอลเลกชัน Workbook.VbaProject.Modules ไปยังวัตถุ VbaModule
  • ดึงรหัสจากแต่ละโมดูลโดยใช้คุณสมบัติ VbaModule.Codes

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแยกแมโคร VBA จากสมุดงาน Excel โดยใช้ C#

// สำหรับตัวอย่างและไฟล์ข้อมูลทั้งหมด โปรดไปที่ https://github.com/aspose-cells/Aspose.Cells-for-.NET
// สร้างวัตถุสมุดงานจากไฟล์ Excel ต้นทาง
Workbook workbook = new Workbook("sample.xlsm");

// แยกโค้ดจากโมดูล VBA แต่ละโมดูล
foreach (VbaModule module in workbook.VbaProject.Modules)
{
    string code = module.Codes;
    Console.Write(code);
}

เพิ่ม VBA Macros ให้กับไฟล์ Excel โดยใช้ C#

Aspose.Cells for .NET ยังให้คุณเพิ่มแมโคร VBA ลงในไฟล์ Excel ที่มีอยู่หรือไฟล์ใหม่ สามารถทำได้โดยทำตามขั้นตอนด้านล่าง

  • สร้างไฟล์ Excel ใหม่หรือโหลดไฟล์ที่มีอยู่โดยใช้คลาส Workbook
  • เพิ่มแผ่นงานใหม่หรือรับแผ่นงานที่มีอยู่โดยใช้คลาส แผ่นงาน
  • เพิ่มโมดูล VBA ใหม่โดยใช้เมธอด Workbook.VbaProject.Modules.Add(Worksheet) และรับ ID ของโมดูล
  • เข้าถึงโมดูล VBA จากคอลเลกชัน Workbook.VbaProject.Modules[idx] ลงในวัตถุ VbaModule
  • เพิ่มชื่อโมดูลโดยใช้คุณสมบัติ VbaModule.Name
  • เพิ่มโค้ดให้กับโมดูลโดยใช้คุณสมบัติ VbaModule.Codes
  • บันทึกสมุดงานโดยใช้เมธอด Workbook.Save(String, SaveFormat.Xlsm)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเพิ่มแมโคร VBA ลงในสมุดงาน Excel โดยใช้ C#

// สำหรับตัวอย่างและไฟล์ข้อมูลทั้งหมด โปรดไปที่ https://github.com/aspose-cells/Aspose.Cells-for-.NET
// สร้างสมุดงานใหม่
Workbook workbook = new Workbook();

// เข้าถึงแผ่นงานแรก
Worksheet worksheet = workbook.Worksheets[0];

// เพิ่มโมดูล VBA
int idx = workbook.VbaProject.Modules.Add(worksheet);

// เข้าถึงโมดูล VBA ตั้งชื่อและรหัส
Aspose.Cells.Vba.VbaModule module = workbook.VbaProject.Modules[idx];
module.Name = "TestModule";

module.Codes = "Sub ShowMessage()" + "\r\n" +
"    MsgBox \"Welcome to Aspose!\"" + "\r\n" +
"End Sub";

// บันทึกสมุดงาน
workbook.Save("output_out.xlsm", SaveFormat.Xlsm);

แก้ไข VBA Macro ในไฟล์ Excel โดยใช้ C#

คุณยังสามารถแก้ไขแมโคร VBA ที่มีอยู่ในไฟล์ Excel โดยใช้ขั้นตอนต่อไปนี้

  • ใช้คลาส Workbook เพื่อโหลดไฟล์ Excel
  • เข้าถึงโมดูล VBA จากคอลเลกชัน Workbook.VbaProject.Modules ลงในวัตถุ VbaModule
  • ดึงโค้ดจากโมดูลที่ต้องการโดยใช้คุณสมบัติ VbaModule.Codes
  • แทนที่โค้ดและบันทึกไฟล์ Excel โดยใช้วิธี Workbook.Save(String)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแก้ไขแมโคร VBA ในไฟล์ Excel โดยใช้ C#

// สำหรับตัวอย่างและไฟล์ข้อมูลทั้งหมด โปรดไปที่ https://github.com/aspose-cells/Aspose.Cells-for-.NET
// สร้างวัตถุสมุดงานจากไฟล์ Excel ต้นทาง
Workbook workbook = new Workbook("sample.xlsm");

// เปลี่ยนรหัสโมดูล VBA
foreach (VbaModule module in workbook.VbaProject.Modules)
{
    string code = module.Codes;

    // แทนที่ข้อความเดิมด้วยข้อความที่แก้ไข
    if (code.Contains("This is test message."))
    {
        code = code.Replace("This is test message.", "This is Aspose.Cells message.");
        module.Codes = code;
    }
}

// บันทึกไฟล์ Excel เอาต์พุต
workbook.Save("output_out.xlsm");

รับใบอนุญาตฟรี

คุณสามารถใช้หรือประเมิน Aspose.Cells for .NET ได้ฟรีโดยใช้ใบอนุญาตชั่วคราวที่มีอายุ 30 วัน รับของคุณทันที.

บทสรุป

มาโคร VBA ในไฟล์ MS Excel ใช้เพื่อทำงานประเภทต่างๆ ที่เกี่ยวข้องกับสเปรดชีตโดยอัตโนมัติ เพื่อจัดการแมโคร VBA โดยทางโปรแกรม บทความนี้กล่าวถึงวิธีการแยก เพิ่ม และแก้ไขโค้ดในโมดูล VBA โดยใช้ C# คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ API การจัดการสเปรดชีต C# โดยใช้ เอกสารประกอบ

ดูสิ่งนี้ด้วย

เคล็ดลับ: คุณอาจต้องการดู Aspose แอปเว็บลบมาโครฟรี