Lavora con le macro VBA nei documenti di Word usando Python

Visual Basic for Applications (VBA) è un potente linguaggio di programmazione che ti consente di automatizzare le attività nei documenti di Word. Inoltre, puoi eseguire facilmente attività ripetitive con le macro VBA. In questo articolo imparerai come lavorare con progetti e moduli VBA nei documenti MS Word. In particolare, l’articolo tratterà come creare, modificare e clonare macro VBA a livello di codice in Python.

Libreria Python per lavorare con le macro VBA di MS Word

Per lavorare con le macro VBA nei file di Word, utilizzeremo Aspose.Words for Python. È una potente libreria per creare e manipolare documenti Word dall’interno delle applicazioni Python. Puoi installare la libreria nella tua applicazione da PyPI usando il seguente comando pip.

pip install aspose-words

Crea macro VBA in un documento MS Word in Python

Di seguito sono riportati i passaggi per creare una macro VBA in un file MS Word DOCM utilizzando Python.

  • Carica il documento di Word o creane uno nuovo usando la classe Document.
  • Crea un oggetto della classe VbaProject.
  • Impostare il nome del progetto utilizzando la proprietà VbaProject.name.
  • Assegna il progetto alla proprietà Document.vbaproject.
  • Crea un oggetto della classe VbaModule.
  • Impostare il nome e il tipo di modulo utilizzando rispettivamente le proprietà VbaModule.name e VbaModule.type.
  • Impostare il codice sorgente utilizzando la proprietà VbaModule.sourcecode.
  • Aggiungi modulo al progetto VBA del documento utilizzando il metodo Document.vbaproject.modules.add(VbaModule).
  • Salva il documento usando il metodo Document.save().

L’esempio di codice seguente mostra come creare una macro VBA in un documento DOCM usando Python.

import aspose.words as aw

# Load Word document.
doc = aw.Document("document.docm")

# Create VBA project
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)

# Save document.
doc.save("create_vba_project.docm")

Modifica la macro VBA in un documento di Word in Python

Puoi anche accedere e modificare senza problemi le macro VBA esistenti nei documenti di Word. I passaggi seguenti mostrano come ottenere questo risultato usando Aspose.Words per Python.

  • Carica il documento di Word usando la classe Document.
  • Ottieni il riferimento di VbaProject in un oggetto usando la proprietà Document.vbaproject.
  • Accedi al modulo VBA desiderato usando index e aggiorna il suo codice sorgente usando la proprietà VbaProject.modules[int].sourcecode.
  • Salva il documento usando il metodo Document.save().

L’esempio di codice seguente mostra come modificare una macro VBA di MS Word esistente usando Python.

import aspose.words as aw

# Load Word document.
doc = aw.Document("document.docm")

# Get reference of VBA project.
project = doc.vba_project

# Update source code.
newSourceCode = "Test change source code"
project.modules[0].source_code = newSourceCode
    
# Save document.
doc.save("modify_vba_macros.docm")

Clona la macro VBA in un documento di Word usando Python

In alcuni casi, potrebbe essere necessario clonare un modulo VBA o l’intero progetto VBA da un documento Word a un altro. Per raggiungere questo obiettivo, Aspose.Words per Python ti consente di creare cloni abbastanza facilmente. Le sezioni seguenti illustrano come clonare un modulo VBA o un progetto VBA.

Clona un modulo VBA

Di seguito sono riportati i passaggi per creare un clone di un modulo VBA da un documento DOCM a un altro utilizzando Python.

  • Carica il documento Word di origine utilizzando la classe Document.
  • Carica il documento Word di destinazione utilizzando la classe Document.
  • Crea un VbaProject per il documento Word di destinazione.
  • Ottieni il clone del modulo VBA dal documento Word di origine in un oggetto usando il metodo Document.vbaproject.modules.getbyname(string).clone().
  • Aggiungi il modulo clonato nel documento di destinazione utilizzando il metodo Document.vbaproject.modules.add(VbaModule).
  • Salva il documento di destinazione utilizzando il metodo Document.save().

L’esempio di codice seguente mostra come clonare un modulo VBA di MS Word in Python.

import aspose.words as aw

# Load source Word document.
doc = aw.Document("document.docm")

# Load destination Word document.
destDoc = aw.Document("dest_document.docm")
destDoc.vba_project = aw.vba.VbaProject() 

# Clone VBA module.
copyModule = doc.vba_project.modules.get_by_name("Module1").clone()
destDoc.vba_project.modules.add(copyModule)

# Save document.
destDoc.save("clone_vba_module.docm")

Clona un progetto VBA

Di seguito sono riportati i passaggi per clonare un progetto VBA di MS Word in Python.

  • Carica il documento Word di origine utilizzando la classe Document.
  • Carica il documento Word di destinazione utilizzando la classe Document.
  • Ottieni il clone del progetto VBA dal documento di origine utilizzando il metodo Document.vbaproject.clone() e aggiungilo al documento di destinazione utilizzando la proprietà Document.vbaproject.
  • Salva il documento di destinazione utilizzando il metodo Document.save().

L’esempio di codice seguente mostra come clonare un progetto VBA da un documento di Word a un altro in Python.

import aspose.words as aw

# Load source Word document.
doc = aw.Document("document.docm")

# Load destination Word document.
destDoc = aw.Document("dest_document.docm")

# Clone VBA project.
destDoc.vba_project = doc.vba_project.clone() 

# Save document.
destDoc.save("clone_vba_module.docm")

Ottieni una licenza API gratuita

Puoi ottenere una licenza temporanea per utilizzare Aspose.Words per Python senza limitazioni di valutazione.

Conclusione

In questo articolo, hai imparato come creare macro VBA in documenti MS Word usando Python. Inoltre, hai visto come modificare o clonare moduli o progetti VBA esistenti a livello di codice. Inoltre, puoi esplorare altre funzionalità di Aspose.Words per Python usando la documentazione. In caso di domande, non esitare a farcelo sapere tramite il nostro forum.

Guarda anche

Informazioni: se hai bisogno di ottenere un documento Word da una presentazione PowerPoint, puoi utilizzare il convertitore Aspose Presentazione in documento Word.