ActiveX Controls in Word Documents
- 2 minutes to read
The Word Processing Document API allows you to retrieve ActiveX controls from a document, obtain control properties, or delete these controls. You can print and export documents with ActiveX controls to PDF.
Important
You cannot modify or run macros associated with ActiveX controls.
Supported Formats
The Word Processing Document API supports ActiveX controls in following file formats:
- DOCX
- DOCM
- DOC
- DOT
- DOTX
- DOTM
- RTF
- PDF (export only)
If a DOC file is encrypted, the Word Processing Document API loads and saves ActiveX controls as images.
Access ActiveX Controls
ActiveX controls are stored in ShapeCollection returned by the SubDocument.Shapes property. Use the ShapeCollection.Item property to return an individual control (a Shape object) from the collection. The Shape.Type property helps you determine a drawing object type. This property returns the ActiveXControl value for an ActiveX control.
The Shape.ActiveXFormat property allows you to obtain the following ActiveX control properties:
Property | Description |
---|---|
Name | Returns the control’s name. |
ControlType | Returns the control’s type. |
ProgId | Returns the programmatic identifier associated with the control. |
The following example retrieves all text box controls from the document:
using DevExpress.XtraRichEdit.API.Native;
using System.Linq;
// ...
Document document = wordProcessor.Document;
List<Shape> textBoxes = document.Shapes
.Where(x => x.Type == ShapeType.ActiveXControl &&
x.ActiveXFormat.ControlType == ActiveXControlType.TextBox)
.ToList();
Remove ActiveX Controls
Use one of the following methods to remove an ActiveX control from the document:
ShapeCollection.Remove – removes a specific object from the collection.
ShapeCollection.RemoveAt – removes an object with the specified index from the collection.
ShapeCollection.Clear – clears the shape collection.
The following example removes all ActiveX controls from the collection:
Document document = wordProcessor.Document;
ShapeCollection shapes = document.Shapes;
for (int i = shapes.Count - 1; i >= 0; i--)
{
if (shapes[i].Type == ShapeType.ActiveXControl)
shapes.Remove(shapes[i]);
}