Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Visual Basic для приложений (VBA) для Microsoft Word - это простой, но мощный язык программирования, который можно использовать для расширения функциональности. Aspose.Words API предоставляет три класса для получения доступа к исходному коду проекта VBA:
Aspose.Words API предоставляет свойство vba_project для получения или установки VbaProject в документе.
В следующем примере кода показано, как создать проект VBA и модуль VBA вместе с базовыми свойствами, например, name и type.:
| # For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
| doc = aw.Document() | |
| project = aw.vba.VbaProject() | |
| project.name = "AsposeProject" | |
| doc.vba_project = project | |
| # Create a new module and specify a macro source code. | |
| module = aw.vba.VbaModule() | |
| module.name = "AsposeModule" | |
| module.type = aw.vba.VbaModuleType.PROCEDURAL_MODULE | |
| module.source_code = "New source code" | |
| # Add module to the VBA project. | |
| doc.vba_project.modules.add(module) | |
| doc.save(docs_base.artifacts_dir + "WorkingWithVba.create_vba_project.docm") |
Aspose.Words также предоставляет пользователям возможность читать VBA макросы.
В следующем примере кода показано, как считывать макросы VBA из документа:
| # For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
| doc = aw.Document(docs_base.my_dir + "VBA project.docm") | |
| if (doc.vba_project != None) : | |
| for module in doc.vba_project.modules : | |
| print(module.source_code) | |
Используя Aspose.Words, пользователи могут изменять макросы VBA.
В следующем примере кода показано, как изменить макросы VBA, используя свойство source_code:
| # For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
| doc = aw.Document(docs_base.my_dir + "VBA project.docm") | |
| project = doc.vba_project | |
| newSourceCode = "Test change source code" | |
| project.modules[0].source_code = newSourceCode | |
| doc.save(docs_base.artifacts_dir + "WorkingWithVba.modify_vba_macros.docm") |
С помощью Aspose.Words также можно клонировать проекты VBA.
В следующем примере кода показано, как клонировать проект VBA, используя свойство clone, которое создает копию существующего проекта:
| # For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
| doc = aw.Document(docs_base.my_dir + "VBA project.docm") | |
| destDoc = aw.Document() | |
| destDoc.vba_project = doc.vba_project.clone() | |
| destDoc.save(docs_base.artifacts_dir + "WorkingWithVba.clone_vba_project.docm") |
При необходимости вы также можете клонировать модули VBA.
В следующем примере кода показано, как клонировать модуль VBA, используя свойство clone, которое создает копию существующего проекта:
| # For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
| doc = aw.Document(docs_base.my_dir + "VBA project.docm") | |
| destDoc = aw.Document() | |
| destDoc.vba_project = aw.vba.VbaProject() | |
| copyModule = doc.vba_project.modules.get_by_name("Module1").clone() | |
| destDoc.vba_project.modules.add(copyModule) | |
| destDoc.save(docs_base.artifacts_dir + "WorkingWithVba.clone_vba_module.docm") |
Aspose.Words API предоставляет VbaReferenceCollection класс для работы с VBA ссылками на проекты, представляющими коллекцию VBA ссылок на проекты.
В следующем примере кода показано, как удалить некоторые ссылки из коллекции ссылок из проекта VBA:
| # For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
| doc = aw.Document(docs_base.my_dir + "VBA project.docm") | |
| # Find and remove the reference with some LibId path. | |
| brokenPath = "brokenPath.dll" | |
| references = doc.vba_project.references | |
| for i in range(references.count - 1, 0) : | |
| reference = doc.vba_project.references.element_at(i) | |
| path = get_lib_id_path(reference) | |
| if (path == brokenPath) : | |
| references.remove_at(i) | |
| doc.save(docs_base.artifacts_dir + "WorkingWithVba.remove_broken_ref.docm") |
| # For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
| # <summary> | |
| # Returns string representing LibId path of a specified reference. | |
| # </summary> | |
| def get_lib_id_path(self, reference) : | |
| if reference.type == aw.vba.VbaReferenceType.REGISTERED or reference.type == aw.vba.VbaReferenceType.ORIGINAL or reference.type == aw.vba.VbaReferenceType.CONTROL : | |
| return self.get_lib_id_reference_path(reference.lib_id) | |
| elif reference.type == aw.vba.VbaReferenceType.PROJECT : | |
| return self.get_lib_id_project_path(reference.lib_id) | |
| else : | |
| raise RuntimeError() | |
| # <summary> | |
| # Returns path from a specified identifier of an Automation type library. | |
| # </summary> | |
| # <remarks> | |
| # Please see details for the syntax at [MS-OVBA], 2.1.1.8 LibidReference. | |
| # </remarks> | |
| @staticmethod | |
| def get_lib_id_reference_path(libIdReference : str) : | |
| if (libIdReference != None) : | |
| refParts = libIdReference.split('#') | |
| if (refParts.length > 3) : | |
| return refParts[3] | |
| return "" | |
| # <summary> | |
| # Returns path from a specified identifier of an Automation type library. | |
| # </summary> | |
| # <remarks> | |
| # Please see details for the syntax at [MS-OVBA], 2.1.1.12 ProjectReference. | |
| # </remarks> | |
| @staticmethod | |
| def get_lib_id_project_path(libIdProject : str) : | |
| if (libIdProject != None) : | |
| return libIdProject.substring(3) | |
| return "" | |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.