Gerenciar Projetos VBA em Apresentações Usando JavaScript

Introdução

O Aspose.Slides fornece classes para trabalhar com macros e código VBA.

Adicionar Macros VBA

O Aspose.Slides fornece a classe VbaProject para permitir que você crie projetos VBA (e referências de projeto) e edite módulos existentes. Você pode usar a classe VbaProject para gerenciar VBA incorporado em uma apresentação.

  1. Crie uma instância da classe Presentation.
  2. Use o construtor VbaProject para adicionar um novo projeto VBA.
  3. Adicione um módulo ao VbaProject.
  4. Defina o código-fonte do módulo.
  5. Adicione referências a .
  6. Adicione referências ao Microsoft Office.
  7. Associe as referências ao projeto VBA.
  8. Salve a apresentação.
// Cria uma instância da classe de apresentação
let pres = new aspose.slides.Presentation();
try {
    // Cria um novo Projeto VBA
    pres.setVbaProject(new aspose.slides.VbaProject());
    // Adiciona um módulo vazio ao projeto VBA
    let module = pres.getVbaProject().getModules().addEmptyModule("Module");
    // Define o código-fonte do módulo
    module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
    // Cria uma referência para <stdole>
    let stdoleReference = new aspose.slides.VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
    // Cria uma referência para Office
    let officeReference = new aspose.slides.VbaReferenceOleTypeLib("Office", "*\\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.0#0#C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL#Microsoft Office 14.0 Object Library");
    // Adiciona referências ao projeto VBA
    pres.getVbaProject().getReferences().add(stdoleReference);
    pres.getVbaProject().getReferences().add(officeReference);
    // Salva a Apresentação
    pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Remover Macros VBA

Usando a propriedade VbaProject da classe Presentation, você pode remover uma macro VBA.

  1. Crie uma instância da classe Presentation e carregue a apresentação que contém a macro.
  2. Acesse o módulo Macro e remova-o.
  3. Salve a apresentação modificada.
// Carrega a apresentação que contém a macro
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
    // Acessa o módulo Vba e o remove
    pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
    // Salva a Apresentação
    pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Extrair Macros VBA

  1. Crie uma instância da classe Presentation e carregue a apresentação que contém a macro.
  2. Verifique se a apresentação contém um Projeto VBA.
  3. Percorra todos os módulos contidos no Projeto VBA para visualizar as macros.
// Carrega a apresentação que contém a macro
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
    // Verifica se a Apresentação contém um Projeto VBA
    if (pres.getVbaProject() != null) {
        for (let i = 0; i < pres.getVbaProject().getModules().size(); i++) {
            let module = pres.getVbaProject().getModules().get_Item(i);
            console.log(module.getName());
            console.log(module.getSourceCode());
        }
    }
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Verificar se um Projeto VBA Está Protegido por Senha

Usando o método VbaProject.isPasswordProtected, você pode determinar se as propriedades de um projeto estão protegidas por senha.

  1. Crie uma instância da classe Presentation e carregue uma apresentação que contém uma macro.
  2. Verifique se a apresentação contém um projeto VBA.
  3. Verifique se o projeto VBA está protegido por senha para visualizar suas propriedades.
let presentation = new aspose.slides.Presentation("VBA.pptm");
try {
    if (presentation.getVbaProject() != null) { // Verifique se a apresentação contém um projeto VBA.
        if (presentation.getVbaProject().isPasswordProtected()) {
            console.log("The VBA Project '%s' is protected by password to view project properties.", 
                    presentation.getVbaProject().getName());
        }
    }
} finally {
    presentation.dispose();
}

FAQ

O que acontece com as macros se eu salvar a apresentação como PPTX?

As macros serão removidas porque o PPTX não suporta VBA. Para manter as macros, escolha PPTM, PPSM ou POTM.

O Aspose.Slides pode executar macros dentro de uma apresentação para, por exemplo, atualizar dados?

Não. A biblioteca nunca executa código VBA; a execução só é possível dentro do PowerPoint com as configurações de segurança apropriadas.

O trabalho com controles ActiveX vinculados a código VBA é suportado?

Sim, você pode acessar controles ActiveX existentes, modificar suas propriedades e removê-los. Isso é útil quando as macros interagem com ActiveX.