com.aspose.words

Class VbaProject

  • java.lang.Object
    • com.aspose.words.VbaProject
  • All Implemented Interfaces:
    java.lang.Cloneable
    public class VbaProject 
    extends java.lang.Object

Provides access to VBA project information. A VBA project inside the document is defined as a collection of VBA modules.

Example:

Shows how to get access to VBA project information in the document.
Document doc = new Document(getMyDir() + "VBA project.docm");

// A VBA project inside the document is defined as a collection of VBA modules
VbaProject vbaProject = doc.getVbaProject();
System.out.println(vbaProject.isSigned()
        ? MessageFormat.format("Project name: {0} signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount())
        : MessageFormat.format("Project name: {0} not signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount()));

VbaModuleCollection vbaModules = doc.getVbaProject().getModules(); 

Assert.assertEquals(vbaModules.getCount(), 3);

for (VbaModule module : vbaModules) {
    System.out.println(MessageFormat.format("Module name: {0};\nModule code:\n{1}\n", module.getName(), module.getSourceCode()));
}

// Set new source code for VBA module
// You can retrieve object by integer or by name
vbaModules.get(0).setSourceCode("Your VBA code...");
vbaModules.get("Module1").setSourceCode("Your VBA code...");

// Remove one of VbaModule from VbaModuleCollection
vbaModules.remove(vbaModules.get(2));

Constructor Summary
VbaProject()
Creates a blank VbaProject.
 
Property Getters/Setters Summary
intgetCodePage()
Returns the VBA project’s code page.
booleanisSigned()
Shows whether the VbaProject is signed or not.
VbaModuleCollectiongetModules()
Returns collection of VBA project modules.
java.lang.StringgetName()
void
setName(java.lang.Stringvalue)
           Gets or sets VBA project name.
 
Method Summary
VbaProjectdeepClone()
Performs a copy of the VbaProject.
 

    • Constructor Detail

      • VbaProject

        public VbaProject()
        Creates a blank VbaProject.

        Example:

        Shows how to create a VbaProject from a scratch for using macros.
        Document doc = new Document();
        
        // Create a new VBA project
        VbaProject project = new VbaProject();
        project.setName("Aspose.Project");
        doc.setVbaProject(project);
        
        // Create a new module and specify a macro source code
        VbaModule module = new VbaModule();
        module.setName("Aspose.Module");
        // VbaModuleType values:
        // procedural module - A collection of subroutines and functions
        // ------
        // document module - A type of VBA project item that specifies a module for embedded macros and programmatic access
        // operations that are associated with a document
        // ------
        // class module - A module that contains the definition for a new object. Each instance of a class creates
        // a new object, and procedures that are defined in the module become properties and methods of the object
        // ------
        // designer module - A VBA module that extends the methods and properties of an ActiveX control that has been
        // registered with the project
        module.setType(VbaModuleType.PROCEDURAL_MODULE);
        module.setSourceCode("New source code");
        
        // Add module to the VBA project
        doc.getVbaProject().getModules().add(module);
        
        doc.save(getArtifactsDir() + "Document.CreateVBAMacros.docm");
    • Property Getters/Setters Detail

      • getCodePage

        public int getCodePage()
        
        Returns the VBA project’s code page.

        Example:

        Shows how to get access to VBA project information in the document.
        Document doc = new Document(getMyDir() + "VBA project.docm");
        
        // A VBA project inside the document is defined as a collection of VBA modules
        VbaProject vbaProject = doc.getVbaProject();
        System.out.println(vbaProject.isSigned()
                ? MessageFormat.format("Project name: {0} signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount())
                : MessageFormat.format("Project name: {0} not signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount()));
        
        VbaModuleCollection vbaModules = doc.getVbaProject().getModules(); 
        
        Assert.assertEquals(vbaModules.getCount(), 3);
        
        for (VbaModule module : vbaModules) {
            System.out.println(MessageFormat.format("Module name: {0};\nModule code:\n{1}\n", module.getName(), module.getSourceCode()));
        }
        
        // Set new source code for VBA module
        // You can retrieve object by integer or by name
        vbaModules.get(0).setSourceCode("Your VBA code...");
        vbaModules.get("Module1").setSourceCode("Your VBA code...");
        
        // Remove one of VbaModule from VbaModuleCollection
        vbaModules.remove(vbaModules.get(2));
      • isSigned

        public boolean isSigned()
        
        Shows whether the VbaProject is signed or not.

        Example:

        Shows how to get access to VBA project information in the document.
        Document doc = new Document(getMyDir() + "VBA project.docm");
        
        // A VBA project inside the document is defined as a collection of VBA modules
        VbaProject vbaProject = doc.getVbaProject();
        System.out.println(vbaProject.isSigned()
                ? MessageFormat.format("Project name: {0} signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount())
                : MessageFormat.format("Project name: {0} not signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount()));
        
        VbaModuleCollection vbaModules = doc.getVbaProject().getModules(); 
        
        Assert.assertEquals(vbaModules.getCount(), 3);
        
        for (VbaModule module : vbaModules) {
            System.out.println(MessageFormat.format("Module name: {0};\nModule code:\n{1}\n", module.getName(), module.getSourceCode()));
        }
        
        // Set new source code for VBA module
        // You can retrieve object by integer or by name
        vbaModules.get(0).setSourceCode("Your VBA code...");
        vbaModules.get("Module1").setSourceCode("Your VBA code...");
        
        // Remove one of VbaModule from VbaModuleCollection
        vbaModules.remove(vbaModules.get(2));
      • getModules

        public VbaModuleCollection getModules()
        
        Returns collection of VBA project modules.

        Example:

        Shows how to get access to VBA project information in the document.
        Document doc = new Document(getMyDir() + "VBA project.docm");
        
        // A VBA project inside the document is defined as a collection of VBA modules
        VbaProject vbaProject = doc.getVbaProject();
        System.out.println(vbaProject.isSigned()
                ? MessageFormat.format("Project name: {0} signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount())
                : MessageFormat.format("Project name: {0} not signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount()));
        
        VbaModuleCollection vbaModules = doc.getVbaProject().getModules(); 
        
        Assert.assertEquals(vbaModules.getCount(), 3);
        
        for (VbaModule module : vbaModules) {
            System.out.println(MessageFormat.format("Module name: {0};\nModule code:\n{1}\n", module.getName(), module.getSourceCode()));
        }
        
        // Set new source code for VBA module
        // You can retrieve object by integer or by name
        vbaModules.get(0).setSourceCode("Your VBA code...");
        vbaModules.get("Module1").setSourceCode("Your VBA code...");
        
        // Remove one of VbaModule from VbaModuleCollection
        vbaModules.remove(vbaModules.get(2));
      • getName/setName

        public java.lang.String getName() / public void setName(java.lang.String value)
        
        Gets or sets VBA project name.

        Example:

        Shows how to create a VbaProject from a scratch for using macros.
        Document doc = new Document();
        
        // Create a new VBA project
        VbaProject project = new VbaProject();
        project.setName("Aspose.Project");
        doc.setVbaProject(project);
        
        // Create a new module and specify a macro source code
        VbaModule module = new VbaModule();
        module.setName("Aspose.Module");
        // VbaModuleType values:
        // procedural module - A collection of subroutines and functions
        // ------
        // document module - A type of VBA project item that specifies a module for embedded macros and programmatic access
        // operations that are associated with a document
        // ------
        // class module - A module that contains the definition for a new object. Each instance of a class creates
        // a new object, and procedures that are defined in the module become properties and methods of the object
        // ------
        // designer module - A VBA module that extends the methods and properties of an ActiveX control that has been
        // registered with the project
        module.setType(VbaModuleType.PROCEDURAL_MODULE);
        module.setSourceCode("New source code");
        
        // Add module to the VBA project
        doc.getVbaProject().getModules().add(module);
        
        doc.save(getArtifactsDir() + "Document.CreateVBAMacros.docm");

        Example:

        Shows how to get access to VBA project information in the document.
        Document doc = new Document(getMyDir() + "VBA project.docm");
        
        // A VBA project inside the document is defined as a collection of VBA modules
        VbaProject vbaProject = doc.getVbaProject();
        System.out.println(vbaProject.isSigned()
                ? MessageFormat.format("Project name: {0} signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount())
                : MessageFormat.format("Project name: {0} not signed; Project code page: {1}; Modules count: {2}\n", vbaProject.getName(), vbaProject.getCodePage(), vbaProject.getModules().getCount()));
        
        VbaModuleCollection vbaModules = doc.getVbaProject().getModules(); 
        
        Assert.assertEquals(vbaModules.getCount(), 3);
        
        for (VbaModule module : vbaModules) {
            System.out.println(MessageFormat.format("Module name: {0};\nModule code:\n{1}\n", module.getName(), module.getSourceCode()));
        }
        
        // Set new source code for VBA module
        // You can retrieve object by integer or by name
        vbaModules.get(0).setSourceCode("Your VBA code...");
        vbaModules.get("Module1").setSourceCode("Your VBA code...");
        
        // Remove one of VbaModule from VbaModuleCollection
        vbaModules.remove(vbaModules.get(2));
    • Method Detail

      • deepClone

        public VbaProject deepClone()
        Performs a copy of the VbaProject.
        Returns:
        The cloned VbaProject.

        Example:

        Shows how to deep clone VbaProject and VbaModule.
        Document doc = new Document(getMyDir() + "VBA project.docm");
        Document destDoc = new Document();
        
        // Clone VbaProject to the document
        VbaProject copyVbaProject = doc.getVbaProject().deepClone();
        destDoc.setVbaProject(copyVbaProject);
        
        // In destination document we already have "Module1", because he was cloned with VbaProject
        // Therefore need to remove it before cloning
        VbaModule oldVbaModule = destDoc.getVbaProject().getModules().get("Module1");
        VbaModule copyVbaModule = doc.getVbaProject().getModules().get("Module1").deepClone();
        destDoc.getVbaProject().getModules().remove(oldVbaModule);
        destDoc.getVbaProject().getModules().add(copyVbaModule);
        
        destDoc.save(getArtifactsDir() + "Document.CloneVbaProject.docm");