Arbeta med VBA-makron i Word-dokument med Python

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

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

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.