Làm việc với Macro của VBA

Visual Basic cho Ứng dụng (VBA) cho Microsoft Word là ngôn ngữ lập trình đơn giản nhưng mạnh mẽ có thể được dùng để mở rộng chức năng. Aspose.Words API cung cấp ba lớp để truy cập mã nguồn dự án VBA:

“- Lớp VBAProject cung cấp quyền truy cập vào thông tin dự án VBA”

Tạo một dự án VBA

Aspose.Words API cung cấp thuộc tính VbaProject để lấy hoặc đặt VbaProject trong tài liệu.

Mã ví dụ sau cho thấy cách tạo một dự án VBA và mô-đun VBA cùng với các thuộc tính cơ bản ví dụ như: Tên và Loại:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
// Create a new VBA project.
VbaProject project = new VbaProject();
project.setName("AsposeProject");
doc.setVbaProject(project);
// Create a new module and specify a macro source code.
VbaModule module = new VbaModule();
module.setName("AsposeModule");
module.setType(VbaModuleType.PROCEDURAL_MODULE);
module.setSourceCode("New source code");
// Add module to the VBA project.
doc.getVbaProject().getModules().add(module);
doc.save(dataDir + "VbaProject_out.docm");

Đọc Macro

Aspose.Words cũng cung cấp cho người dùng khả năng đọc các macro VBA.

Mã ví dụ sau cho thấy cách đọc các macro VBA từ tài liệu:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "VbaProject_out.docm");
for (VbaModule module : doc.getVbaProject().getModules()) {
System.out.println(module.getSourceCode());
}
doc.save(dataDir + "VbaProject_out.docm");

Chỉnh sửa Macro

Sử dụng Aspose.Words, người dùng có thể sửa đổi các macro VBA.

Mã ví dụ sau cho thấy cách sửa đổi các macro VBA bằng thuộc tính SourceCode":

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "VbaProject_out.docm");
VbaProject project = doc.getVbaProject();
String newSourceCode = "Test change source code";
// Choose a module, and set a new source code.
project.getModules().get(0).setSourceCode(newSourceCode);

Sao chép Dự án VBA

Với Aspose.Words nó cũng có thể để sao chép các dự án VBA.

Ví dụ mã sau cho thấy cách sao chép dự án VBA bằng thuộc tính Clone, tạo ra bản sao của dự án hiện tại:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "VbaProject_out.docm");
VbaProject project = doc.getVbaProject();
Document destDoc = new Document();
// Clone the whole project.
destDoc.setVbaProject(doc.getVbaProject().deepClone());
destDoc.save(dataDir + "output.docm");

Sao chép mô-đun VBA

Bạn cũng có thể “clone” các mô-đun VBA nếu cần thiết.

Mã ví dụ sau trình diễn cách sao chép mô-đun VBA sử dụng thuộc tính Clone tạo bản sao của dự án hiện tại

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "VbaProject_out.docm");
VbaProject project = doc.getVbaProject();
Document destDoc = new Document();
destDoc.setVbaProject(new VbaProject());
// Clone a single module.
VbaModule copyModule = doc.getVbaProject().getModules().get("Module1").deepClone();
destDoc.getVbaProject().getModules().add(copyModule);
destDoc.save(dataDir + "output.docm");