Quản lý Dự án VBA trong Bản trình chiếu với .NET

Giới thiệu

Không gian tên Aspose.Slides.Vba chứa các lớp và giao diện để làm việc với macro và mã VBA.

Thêm Macro VBA

Aspose.Slides cung cấp lớp VbaProject để cho phép bạn tạo các dự án VBA (và các tham chiếu dự án) và chỉnh sửa các mô-đun hiện có. Bạn có thể sử dụng giao diện IVbaProject để quản lý VBA nhúng trong bản trình chiếu.

  1. Tạo một thể hiện của lớp Presentation.
  2. Sử dụng hàm khởi tạo VbaProject để thêm một dự án VBA mới.
  3. Thêm một mô-đun vào VbaProject.
  4. Đặt mã nguồn của mô-đun.
  5. Thêm tham chiếu tới .
  6. Thêm tham chiếu tới Microsoft Office.
  7. Liên kết các tham chiếu với dự án VBA.
  8. Lưu bản trình chiếu.

Đoạn mã C# sau đây cho bạn thấy cách thêm một macro VBA từ đầu vào bản trình chiếu:

    // Tạo một thể hiện của lớp Presentation
using (Presentation presentation = new Presentation())
{
    // Tạo một dự án VBA mới
    presentation.VbaProject = new VbaProject();

    // Thêm một mô-đun rỗng vào dự án VBA
    IVbaModule module = presentation.VbaProject.Modules.AddEmptyModule("Module");
  
    // Đặt mã nguồn cho mô-đun
    module.SourceCode = @"Sub Test(oShape As Shape) MsgBox ""Test"" End Sub";

    // Tạo một tham chiếu tới <stdole>
    VbaReferenceOleTypeLib stdoleReference =
        new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");

    // Tạo một tham chiếu tới Office
    VbaReferenceOleTypeLib officeReference =
        new VbaReferenceOleTypeLib("Office", "*\\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.0#0#C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL#Microsoft Office 14.0 Object Library");

    // Thêm các tham chiếu vào dự án VBA
    presentation.VbaProject.References.Add(stdoleReference);
    presentation.VbaProject.References.Add(officeReference);

            
    // Lưu bản trình chiếu
    presentation.Save(dataDir + "AddVBAMacros_out.pptm", SaveFormat.Pptm);
}

Xóa Macro VBA

Bằng cách sử dụng thuộc tính VbaProject của lớp Presentation, bạn có thể xóa một macro VBA.

  1. Tạo một thể hiện của lớp Presentation và tải bản trình chiếu có chứa macro.
  2. Truy cập mô-đun Macro và xóa nó.
  3. Lưu bản trình chiếu đã sửa đổi.

Đoạn mã C# sau đây cho bạn thấy cách xóa một macro VBA:

    // Tải bản trình chiếu có chứa macro
using (Presentation presentation = new Presentation(dataDir + "VBA.pptm"))
{
    // Truy cập mô-đun Vba và xóa nó 
    presentation.VbaProject.Modules.Remove(presentation.VbaProject.Modules[0]);

    // Lưu bản trình chiếu
    presentation.Save(dataDir + "RemovedVBAMacros_out.pptm", SaveFormat.Pptm);
}

Trích xuất Macro VBA

  1. Tạo một thể hiện của lớp Presentation và tải bản trình chiếu có chứa macro.
  2. Kiểm tra xem bản trình chiếu có chứa một Dự án VBA hay không.
  3. Lặp qua tất cả các mô-đun trong Dự án VBA để xem các macro.

Đoạn mã C# sau đây cho bạn thấy cách trích xuất macro VBA từ một bản trình chiếu có chứa macro:

    // Tải bản trình chiếu có chứa macro
using (Presentation pres = new Presentation("VBA.pptm"))
{
	if (pres.VbaProject != null) // Kiểm tra xem bản trình chiếu có chứa dự án VBA không
	{
		foreach (IVbaModule module in pres.VbaProject.Modules)
		{
			Console.WriteLine(module.Name);
			Console.WriteLine(module.SourceCode);
		}
	}
}

Kiểm tra xem Dự án VBA có được bảo vệ bằng mật khẩu hay không

Bằng cách sử dụng thuộc tính IVbaProject.IsPasswordProtected, bạn có thể xác định xem các thuộc tính của dự án có được bảo vệ bằng mật khẩu hay không.

  1. Tạo một thể hiện của lớp Presentation và tải một bản trình chiếu có chứa macro.
  2. Kiểm tra xem bản trình chiếu có chứa một dự án VBA hay không.
  3. Kiểm tra xem dự án VBA có được bảo vệ bằng mật khẩu để xem các thuộc tính của nó hay không.
using (Presentation presentation = new Presentation("VBA.pptm"))
{
    if (presentation.VbaProject != null) // Kiểm tra xem bản trình chiếu có chứa dự án VBA không.
    {
        if (presentation.VbaProject.IsPasswordProtected)
        {
            Console.WriteLine($"The VBA Project '{presentation.VbaProject.Name}' is protected by password to view project properties.");
        }
    }
}

Câu hỏi thường gặp

Đi gì sẽ xảy ra với macro nếu tôi lưu bản trình chiếu dưới dạng PPTX?

Macro sẽ bị loại bỏ vì PPTX không hỗ trợ VBA. Để giữ macro, hãy chọn PPTM, PPSM hoặc POTM.

Aspose.Slides có thể chạy macro trong bản trình chiếu để, ví dụ, làm mới dữ liệu không?

Không. Thư viện không bao giờ thực thi mã VBA; việc thực thi chỉ có thể thực hiện trong PowerPoint với các cài đặt bảo mật phù hợp.

Có hỗ trợ làm việc với các điều khiển ActiveX liên kết với mã VBA không?

Có, bạn có thể truy cập các điều khiển ActiveX, sửa đổi thuộc tính của chúng và xóa chúng. Điều này hữu ích khi macro tương tác với ActiveX.