com.aspose.words

Class VbaReference

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

Implements a reference to an Automation type library or VBA project.

Example:

Shows how to get/remove an element from the VBA reference collection.
@Test
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) : "";
}

Property Getters/Setters Summary
abstract java.lang.StringgetLibId()
Gets a string value containing the identifier of an Automation type library.
abstract intgetType()
Gets VbaReferenceType object that indicates the type of reference that a VbaReference object represents. The value of the property is VbaReferenceType integer constant.
 

    • Property Getters/Setters Detail

      • getLibId

        public abstract java.lang.String getLibId()
        
        Gets a string value containing the identifier of an Automation type library. Depending on reference type, the value of this property can be:
        • a LibidReference specified at 2.1.1.8 LibidReference of [MS-OVBA]: https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-ovba/3737ef6e-d819-4186-a5f2-6e258ddf66a5
        • a ProjectReference specified at 2.1.1.12 ProjectReference of [MS-OVBA]: https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-ovba/9a45ac1a-f1ff-4ebd-958e-537701aa8131

        Example:

        Shows how to get/remove an element from the VBA reference collection.
        @Test
        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) : "";
        }
      • getType

        public abstract int getType()
        
        Gets VbaReferenceType object that indicates the type of reference that a VbaReference object represents. The value of the property is VbaReferenceType integer constant.