Visual Basic for Applications (VBA) är ett kraftfullt programmeringsspråk som låter dig automatisera uppgifter i Word-dokument. Dessutom kan du utföra repetitiva uppgifter med VBA-makron ganska enkelt. I den här artikeln kommer du att lära dig hur du arbetar med VBA-projekt och moduler i MS Word-dokument. Speciellt kommer artikeln att täcka hur man skapar, modifierar och klonar VBA-makron programmatiskt i Python.
- Python-bibliotek för att arbeta med MS Word VBA-makron
- Skapa VBA-makro i ett MS Word-dokument
- Ändra VBA-makro i ett Word-dokument
- Klona VBA-makro i ett Word-dokument
Python-bibliotek för att arbeta med MS Word VBA-makron
För att arbeta med VBA-makron i Word-filer kommer vi att använda Aspose.Words for Python. Det är ett kraftfullt bibliotek för att skapa och manipulera Word-dokument från Python-applikationer. Du kan installera biblioteket i din applikation från PyPI med följande pip-kommando.
pip install aspose-words
Skapa VBA-makro i ett MS Word-dokument i Python
Följande är stegen för att skapa ett VBA-makro i en MS Word DOCM-fil med Python.
- Ladda Word-dokumentet eller skapa ett nytt med klassen Document.
- Skapa ett objekt av klassen VbaProject.
- Ställ in namnet på projektet med egenskapen VbaProject.name.
- Tilldela projekt till egenskapen Document.vbaproject.
- Skapa ett objekt av VbaModule-klassen.
- Ställ in namn och typ av modul med egenskaperna VbaModule.name respektive VbaModule.type.
- Ställ in källkod med VbaModule.sourcecode-egenskapen.
- Lägg till modul till dokumentets VBA-projekt med metoden Document.vbaproject.modules.add(VbaModule).
- Spara dokumentet med metoden Document.save().
Följande kodexempel visar hur man skapar ett VBA-makro i ett DOCM-dokument med Python.
import aspose.words as aw
# Ladda Word-dokument.
doc = aw.Document("document.docm")
# Skapa VBA-projekt
project = aw.vba.VbaProject()
project.name = "AsposeProject"
doc.vba_project = project
# Skapa en ny modul och ange en makrokällkod.
module = aw.vba.VbaModule()
module.name = "AsposeModule"
module.type = aw.vba.VbaModuleType.PROCEDURAL_MODULE
module.source_code = "New source code"
# Lägg till modul till VBA-projektet.
doc.vba_project.modules.add(module)
# Spara dokument.
doc.save("create_vba_project.docm")
Ändra VBA-makro i ett Word-dokument i Python
Du kan också komma åt och ändra befintliga VBA-makron i Word-dokument sömlöst. Följande steg visar hur du uppnår detta med Aspose.Words för Python.
- Ladda Word-dokumentet med dokumentklassen.
- Hämta referens av VbaProject till ett objekt med Document.vbaproject-egenskapen.
- Få åtkomst till den önskade VBA-modulen med hjälp av index och uppdatera dess källkod med egenskapen VbaProject.modules[int].sourcecode.
- Spara dokumentet med metoden Document.save().
Följande kodexempel visar hur man ändrar ett befintligt MS Word VBA-makro med Python.
import aspose.words as aw
# Ladda Word-dokument.
doc = aw.Document("document.docm")
# Få referens till VBA-projekt.
project = doc.vba_project
# Uppdatera källkoden.
newSourceCode = "Test change source code"
project.modules[0].source_code = newSourceCode
# Spara dokument.
doc.save("modify_vba_macros.docm")
Klona VBA-makro i ett Word-dokument med Python
I vissa fall kan du behöva klona en VBA-modul eller hela VBA-projektet från ett Word-dokument till ett annat. För att uppnå detta låter Aspose.Words för Python dig skapa kloner ganska enkelt. Följande avsnitt beskriver hur man klona en VBA-modul eller ett VBA-projekt.
Klona en VBA-modul
Följande är stegen för att skapa en klon av en VBA-modul från ett DOCM-dokument till ett annat med Python.
- Ladda källdokumentet i Word med Document class.
- Ladda måldokumentet i Word med Document class.
- Skapa ett VbaProject för måldokument i Word.
- Hämta klon av VBA-modul från Word-källdokument till ett objekt med metoden Document.vbaproject.modules.getbyname(string).clone().
- Lägg till den klonade modulen i måldokumentet med metoden Document.vbaproject.modules.add(VbaModule).
- Spara måldokumentet med metoden Document.save().
Följande kodexempel visar hur man klona en MS Word VBA-modul i Python.
import aspose.words as aw
# Ladda källdokument i Word.
doc = aw.Document("document.docm")
# Ladda mål Word-dokument.
destDoc = aw.Document("dest_document.docm")
destDoc.vba_project = aw.vba.VbaProject()
# Klona VBA-modulen.
copyModule = doc.vba_project.modules.get_by_name("Module1").clone()
destDoc.vba_project.modules.add(copyModule)
# Spara dokument.
destDoc.save("clone_vba_module.docm")
Klona ett VBA-projekt
Följande är stegen för att klona ett MS Word VBA-projekt i Python.
- Ladda källdokumentet i Word med Document class.
- Ladda måldokumentet i Word med Document class.
- Hämta en klon av VBA-projektet från källdokumentet med metoden Document.vbaproject.clone() och lägg till det i måldokumentet med egenskapen Document.vbaproject.
- Spara måldokumentet med metoden Document.save().
Följande kodexempel visar hur man klona ett VBA-projekt från ett Word-dokument till ett annat i Python.
import aspose.words as aw
# Ladda källdokument i Word.
doc = aw.Document("document.docm")
# Ladda mål Word-dokument.
destDoc = aw.Document("dest_document.docm")
# Clone VBA-projekt.
destDoc.vba_project = doc.vba_project.clone()
# Spara dokument.
destDoc.save("clone_vba_module.docm")
Skaffa en gratis API-licens
Du kan få en tillfällig licens för att använda Aspose.Words för Python utan utvärderingsbegränsningar.
Slutsats
I den här artikeln har du lärt dig hur du skapar VBA-makron i MS Word-dokument med Python. Dessutom har du sett hur man modifierar eller klonar befintliga VBA-moduler eller projekt programmatiskt. Dessutom kan du utforska andra funktioner i Aspose.Words for Python med hjälp av dokumentationen. Om du har några frågor är du välkommen att meddela oss via vårt forum.
Se även
- Skapa MS Word-dokument med Python
- Konvertera Word-dokument till HTML med Python
- Konvertera Word-dokument till PNG, JPEG eller BMP i Python
- Word-dokument till Markdown med Python
- Jämför två Word-dokument i Python
Info: Om du någonsin behöver få ett Word-dokument från en PowerPoint-presentation kan du använda Aspose Presentation to Word Document-konverteraren.