java.lang.Object
com.aspose.words.VbaProject
public class VbaProject
To learn more, visit the Working with VBA Macros documentation article. Example:
Document doc = new Document(getMyDir() + "VBA project.docm");
// A VBA project contains 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 access VBA modules in the collection either by index or by name.
vbaModules.get(0).setSourceCode("Your VBA code...");
vbaModules.get("Module1").setSourceCode("Your VBA code...");
// Remove a module from the collection.
vbaModules.remove(vbaModules.get(2));
| Constructor Summary |
|---|
VbaProject()
Creates a blank |
| Property Getters/Setters Summary | ||
|---|---|---|
int | getCodePage() | |
void | setCodePage(int value) | |
| Gets or sets the VBA project’s code page. | ||
boolean | isProtected() | |
|
Shows whether the |
||
boolean | isSigned() | |
|
Shows whether the |
||
VbaModuleCollection | getModules() | |
| Returns collection of VBA project modules. | ||
java.lang.String | getName() | |
void | setName(java.lang.String value) | |
| Gets or sets VBA project name. | ||
VbaReferenceCollection | getReferences() | |
| Gets a collection of VBA project references. | ||
| Method Summary | ||
|---|---|---|
VbaProject | deepClone() | |
|
Performs a copy of the |
||
| Constructor Detail |
|---|
public VbaProject()
Example:
Shows how to create a VBA project 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");
module.setType(VbaModuleType.PROCEDURAL_MODULE);
module.setSourceCode("New source code");
// Add the module to the VBA project.
doc.getVbaProject().getModules().add(module);
doc.save(getArtifactsDir() + "VbaProject.CreateVBAMacros.docm");| Property Getters/Setters Detail |
|---|
getCodePage/setCodePage | |
public int getCodePage() / public void setCodePage(int value) | |
Example:
Shows how to access a document's VBA project information.
Document doc = new Document(getMyDir() + "VBA project.docm");
// A VBA project contains 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 access VBA modules in the collection either by index or by name.
vbaModules.get(0).setSourceCode("Your VBA code...");
vbaModules.get("Module1").setSourceCode("Your VBA code...");
// Remove a module from the collection.
vbaModules.remove(vbaModules.get(2));isProtected | |
public boolean isProtected() | |
Example:
Shows whether the VbaProject is password protected.Document doc = new Document(getMyDir() + "Vba protected.docm"); Assert.assertTrue(doc.getVbaProject().isProtected());
isSigned | |
public boolean isSigned() | |
Example:
Shows how to access a document's VBA project information.
Document doc = new Document(getMyDir() + "VBA project.docm");
// A VBA project contains 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 access VBA modules in the collection either by index or by name.
vbaModules.get(0).setSourceCode("Your VBA code...");
vbaModules.get("Module1").setSourceCode("Your VBA code...");
// Remove a module from the collection.
vbaModules.remove(vbaModules.get(2));getModules | |
public VbaModuleCollection getModules() | |
Example:
Shows how to access a document's VBA project information.
Document doc = new Document(getMyDir() + "VBA project.docm");
// A VBA project contains 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 access VBA modules in the collection either by index or by name.
vbaModules.get(0).setSourceCode("Your VBA code...");
vbaModules.get("Module1").setSourceCode("Your VBA code...");
// Remove a module from the collection.
vbaModules.remove(vbaModules.get(2));getName/setName | |
public java.lang.String getName() / public void setName(java.lang.String value) | |
Example:
Shows how to create a VBA project 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");
module.setType(VbaModuleType.PROCEDURAL_MODULE);
module.setSourceCode("New source code");
// Add the module to the VBA project.
doc.getVbaProject().getModules().add(module);
doc.save(getArtifactsDir() + "VbaProject.CreateVBAMacros.docm");Example:
Shows how to access a document's VBA project information.
Document doc = new Document(getMyDir() + "VBA project.docm");
// A VBA project contains 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 access VBA modules in the collection either by index or by name.
vbaModules.get(0).setSourceCode("Your VBA code...");
vbaModules.get("Module1").setSourceCode("Your VBA code...");
// Remove a module from the collection.
vbaModules.remove(vbaModules.get(2));getReferences | |
public VbaReferenceCollection getReferences() | |
Example:
Shows how to get/remove an element from the VBA reference collection.
public void removeVbaReference() throws Exception {
final String BROKEN_PATH = "X:\\broken.dll";
Document doc = new Document(getMyDir() + "VBA project.docm");
VbaReferenceCollection references = doc.getVbaProject().getReferences();
Assert.assertEquals(5, references.getCount());
for (int i = references.getCount() - 1; i >= 0; i--) {
VbaReference reference = doc.getVbaProject().getReferences().get(i);
String path = getLibIdPath(reference);
if (BROKEN_PATH.equals(path))
references.removeAt(i);
}
Assert.assertEquals(4, references.getCount());
references.remove(references.get(1));
Assert.assertEquals(3, references.getCount());
doc.save(getArtifactsDir() + "VbaProject.RemoveVbaReference.docm");
}
/// <summary>
/// Returns string representing LibId path of a specified reference.
/// </summary>
private static String getLibIdPath(VbaReference reference) {
switch (reference.getType()) {
case VbaReferenceType.REGISTERED:
case VbaReferenceType.ORIGINAL:
case VbaReferenceType.CONTROL:
return getLibIdReferencePath(reference.getLibId());
case VbaReferenceType.PROJECT:
return getLibIdProjectPath(reference.getLibId());
default:
throw new IllegalArgumentException();
}
}
/// <summary>
/// Returns path from a specified identifier of an Automation type library.
/// </summary>
private static String getLibIdReferencePath(String libIdReference) {
if (libIdReference != null) {
String[] refParts = libIdReference.split("#");
if (refParts.length > 3)
return refParts[3];
}
return "";
}
/// <summary>
/// Returns path from a specified identifier of an Automation type library.
/// </summary>
private static String getLibIdProjectPath(String libIdProject) {
return libIdProject != null ? libIdProject.substring(3) : "";
}| Method Detail |
|---|
deepClone | |
public VbaProject deepClone() | |
Example:
Shows how to deep clone a VBA project and module.
Document doc = new Document(getMyDir() + "VBA project.docm");
Document destDoc = new Document();
VbaProject copyVbaProject = doc.getVbaProject().deepClone();
destDoc.setVbaProject(copyVbaProject);
// In the destination document, we already have a module named "Module1"
// because we cloned it along with the project. We will need to remove the module.
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() + "VbaProject.CloneVbaProject.docm");