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”
- Lớp VBAModulesCollection trả về bộ sưu tập mô-đun dự án VBA
- Lớp VbaModule cung cấp truy cập đến mô-đun 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"); |