Why documentation generation may fail or behave differently since 2024
Starting in 2024, Microsoft disabled ActiveX controls by default in Microsoft 365 and Office 2024 (see Microsoft's official announcement).
This plugin drives MS Word through its COM/ActiveX automation interface, and Word will now refuse to create new ActiveX objects while it is being automated this way, unless you explicitly allow it.
The feature most affected by this change is the recursiveimg tag with an *.xlsx filter, which embeds a live MS Excel worksheet into the document as an ActiveX/OLE object – this is exactly the kind of operation Microsoft's new default blocks. Plain images (*.png, *.jpg, ...) are not ActiveX objects and are not affected.
How to work around it:
Still stuck? Other software on your machine (security suites, rights-management/DLP add-ins, old leftover drivers, ...) can also silently block Word/Excel automation, sometimes with no clear error message at all. Read more about this issue with Word automation and how to diagnose it »
Starting in 2024, Microsoft disabled ActiveX controls by default in Microsoft 365 and Office 2024 (see Microsoft's official announcement).
This plugin drives MS Word through its COM/ActiveX automation interface, and Word will now refuse to create new ActiveX objects while it is being automated this way, unless you explicitly allow it.
The feature most affected by this change is the recursiveimg tag with an *.xlsx filter, which embeds a live MS Excel worksheet into the document as an ActiveX/OLE object – this is exactly the kind of operation Microsoft's new default blocks. Plain images (*.png, *.jpg, ...) are not ActiveX objects and are not affected.
How to work around it:
- In Word, open File » Options » Trust Center » Trust Center Settings » ActiveX Settings
and choose "Prompt me before enabling all controls with minimal restrictions".
Note that this setting applies to all Office applications on this computer (Word, Excel, PowerPoint, Visio), not only to documents generated by this plugin. - If generating with a template file still fails afterwards, select the "MS Office interactive mode"
option below.
This keeps Word visible while the document is generated, so any security prompt Word shows can be seen and confirmed manually instead of silently blocking the automation in the background. - If you don't need embedded Excel worksheets, avoid using the recursiveimg tag with an *.xlsx filter in your project file – this sidesteps the one operation that triggers the block.
- If none of the above helps and documentation generation still fails, remove the path to the
template file and leave this field blank. The plugin will then create a new, blank Word
document instead of opening your customized template, and documentation generation will
complete successfully.
The only downside of this workaround is that the resulting document will not include the title page normally provided by the template (company logo, pre-formatted cover, etc.) – all other generated content (sections, tables, images, references) is unaffected and will be produced as usual. This lets you keep generating documentation while the underlying Word automation issue on your machine is resolved.
Still stuck? Other software on your machine (security suites, rights-management/DLP add-ins, old leftover drivers, ...) can also silently block Word/Excel automation, sometimes with no clear error message at all. Read more about this issue with Word automation and how to diagnose it »
▲ Overview
The Documentation Generator Pro Plugin automatically generates documentation for multiple robots' archive files in MS Word or PDF format.
Save as (plugin version 1.8): MS Office Word (*.doc), HTML (*.html), Acrobat Reader (*.pdf) and MS Office Word (*.docx). The *.doc file is always written; PDF is exported by Word (Export as PDF), HTML and DOCX are saved in their own format – also in the MS Office interactive mode. Before version 1.8 the chosen format was not passed to Word and the *.pdf / *.html file was in fact a Word document.
The console of the plugin shows Word errors (instead of a message box that stopped the generation), a File not saved line when the output file was not written, and a warning for every tag of the project file that is unknown or not allowed at its place (e.g. filelist outside a section). Not available for ABB (a warning in the console, nothing inserted): the tag reference and robot attr="cell".
ABB-only attributes used in abb.doc.pro.project.xml: task="TASK1;TASK2" on robot and filelist (RAPID tasks to read), euler="true" on robot attr="tool" / "base" (orientation as Euler angles instead of quaternions), sysmod on app. The attribute comment of filelist is not used by the ABB plugin.
To customize the view of generated documents the user can edit or create a new XML documentation project file.
The plugin uses a customized MS Word document as a template to generate the final documentation.
The user can prepare an MS Word template with a customized header and footer and even the title page.
In the figure below you can see an example of a documentation template.
Into the first empty text field on the first page the robot name will be automatically written.
The second text field can contain the project name customized by the user.
Below you can find a description of a simple project file and predefined XML tags used to include external files' sources, display robot's system information and many others.
If you want to create your own documentation project file contact us and we will help you free of charge.
▲ Plugin widget
▲ Simple project file
To customize the look of generated documentation the user can create or edit a simple XML project file with some predefined tags.
Those tags are used to write ordinary text with specified font, color and alignment or insert some extra information about the robot.
▲ The XML project file starts with the main tag ABBDocumentationProProject.
<ABBDocumentationProProject version="">
</ABBDocumentationProProject>
Between those tags the user can define the entire documentation's content. </ABBDocumentationProProject>
| Property | Values | Description |
| version | Any valid version number text | Project file version number. |
▲ The section tag is used to attach the robot's information and listing of external files.
<ABBDocumentationProProject version="1.0">
<section title="" style="" align="" include="">
</section>
</ABBDocumentationProProject>
| Property | Values | Description |
| title | Any valid text | Section title. |
| style | Style sheet |
Allows styling information to be included with the rich text for the section title. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| align | [ left | right | center | justify ] | Horizontal section title text alignment. |
| include | [ 1 | 0 ] | Includes title page section in the document if 1. If 0 or not specified this section will not be displayed. |
The section tag can contain the following subtags: img, text, robot, breakline, breakpage, filelist.
▲ The makeindex tag creates the pages' index.
If you want to display the correct page number for each included section in the document please insert this tag at the end of the project file.
Only in this way can the plugin refer to pages' numbers correctly.
<ABBDocumentationProProject version="1.0">
<makeindex title="" style="" style2="" align="" include="" />
</ABBDocumentationProProject>
| Property | Values | Description |
| title | Any valid text | Index page title. |
| style | Style sheet |
Allows styling information to be included with the rich text for the pages' index title. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| style2 | Style sheet |
Allows styling information to be included with the rich text for the pages' list with sections' names. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| align | [ left | right | center | justify ] | Horizontal text alignment. |
| include | [ 1 | 0 ] | Includes pages' index in the document if 1. If 0 or not specified this section will not be displayed. |
▲ The app tag defines the robot's application description.
<app text="" sysmod="" />
| Property | Values | Description |
| text | Any valid text | Application's description text eg.: Handling, Kleben, Schweissen. |
| sysmod | Text semicolon list |
Semicolon list with the system modules used by the specified application (as in
abb.doc.pro.project.xml). The older name makro is accepted too (plugin version 1.8 and higher). |
See robotapplication and robot tags for more details.
▲ The stations tag defines long stations' names.
<ABBDocumentationProProject version="1.0">
<stations include="">
<name short="" long="" />
</stations>
</ABBDocumentationProProject>
| Property | Values | Description |
| short | Any valid text | |
| long | Any valid text |
See the robot tag for more details.
▲ The filelist tag is used to include the source code of the robot's programs.
<filelist filter="" task="" viewer="" comment="" style="" style2="" align="" />
| Property | Values | Description |
| filter | Valid regular expression |
This regular expression defines a filter for the fileset to be searched for and included into the documentation. For example, if you want to include in the current fileset only Makros defined by the user, use the following filter makro5[0-9].src. This filter will include Makro: 50, 51, 52, 53, 54, 55, 56, 57, 58 and 59 if they exist. The folge*.src filter will include all Folge files and up*.src only UP. |
| style | Style sheet |
Allows styling information to be included with the rich text for the displayed file name. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| style2 | Style sheet |
Allows styling information to be included with the rich text for the attached files' source code. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| align | [ left | right | center | justify ] | Horizontal text alignment. |
| viewer | [ -1 | 0 | 1 ] | Displays file contents as plain text if 0. If 1 displays text as shown in the ABB viewer. Do not show file contents if -1. |
| task | text | The name of the task directory to list available files, eg.: TASK1, TASK2, TASK* |
| comment | [ 0 | 1 ] | Displays the file comment after the file name if 1. |
▲ The img tag inserts the given image from the resource.
<img src="" style="" height="" width="" rotation="" align="" />
| Property | Values | Description |
| src | Image | Contains a URI that is supposed to point to the location of the image resource. |
| style | Style sheet |
Allows styling information to be included with the rich text for the image. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| width | <length> px | Specifies the width of the image. |
| height | <length> px | Specifies the height of the image. |
| rotation | <angle> | Specifies the rotation angle in degrees. Positive value for clockwise rotation and negative for counterclockwise rotation. |
| align | [ left | right | center | justify ] | Horizontal image alignment. |
▲ The safetyzones tag (inside a section) inserts the safety zones of the robot: the zone table, the drawings from the top and from the side and the result of the test of the programs. The data comes from the plugin Robot Safety View (it must be installed): ABB SafeMove (BACKINFO\sc_cfg.xml of the archive).
The node contains: the source of the data (file and configuration signature), a table of the zones (number, name, type forbidden / allowed with the shape, Z range, frame, activation, stop and status), the drawings, and the result of the test – the points and the straight lines of the linear motions of the programs against the zones: the numbers of points evaluated / not evaluated (with the reasons, e.g. work object other than wobj0 or a stationary tool), the workspace (X, Y, Z), the numbers of violations and of points near a border, the minimum margin of every zone in the zone table and a table of the findings (level, zone, program, point, line, position). If the test is not possible (for example a robot with an extended axis) the node contains the zones and a message with the reason. It is a warning, not a safety certification (the sentence is part of the node).
<safetyzones include="1" images="1" table="1" findings="1" near="100" radius="0" max="50" style="" align="" />
| Property | Values | Description |
| include | [ 1 | 0 ] | 0 skips the node. The check box Safety zones of the plugin window switches the node off for the whole run. |
| images | [ 1 | 0 ] | 1 (default) inserts the drawings of the zones and of the workspace from the top and from the side; 0 leaves them out. |
| table | [ 1 | 0 ] | 1 (default) inserts the zone table (number, name, forbidden / allowed with shape, Z range, frame, activation, stop reaction, status); 0 leaves it out. |
| findings | [ 1 | 0 ] | 1 (default) inserts the result of the test of the programs (points evaluated / not evaluated, workspace, numbers of violations and of points near a border) and the table of the findings; 0 leaves them out. |
| near | [ mm ] | Default 100. A point or a linear motion closer than this to the border of a zone (on the allowed side) is reported as near the border (orange). Same as Near border in Robot Safety View. |
| radius | [ mm ] | Default 0. Tool radius: the TCP is treated as a sphere of this radius when the distance to the border is checked. Same as Tool radius in Robot Safety View. |
| max | [ number ] | Default 50. Maximum number of rows of the table of the findings (the worst first). |
| style, align | Text format, as for the other tags. |
▲ The recursiveimg tag inserts images recursively.
You can use it to insert payload protocols, safety configuration etc...
If you want to insert more than one payload protocol image you can set the files' names as follows:
loaddata_kahka1516480r01rs--kux_T7.pdf
loaddata_kahka1516480r01rs--kux_T8.pdf
loaddata_kahka1516480r01rs--kux_T9.pdf
loaddata_kahka1516480r01rs--kux_T10.pdf
...
and use the following file filter: loaddata_kahka1516480r01rs--kux_T8.pdf
loaddata_kahka1516480r01rs--kux_T9.pdf
loaddata_kahka1516480r01rs--kux_T10.pdf
...
loaddata_*__ROBOTNAME__*.pdf
The __ROBOTNAME__ tag will be replaced with the present robot name.
<recursiveimg path="" filter="" align="" scaleW="" scaleH="" rotation="" breakpage="" />
| Property | Values | Description |
| path | Any valid system path | Path to the directory containing images. |
| filter | File filter semicolon list |
The filter is used to find suitable images in the directory e.g.: *.png;*.bmp;*.gif;*.jpg;*.jpeg You can even insert an Acrobat Reader file. In this case use the *.pdf filter. In the filter you can use the __ROBOTNAME__ tag which will be replaced with the present robot name. |
| align | [ left | right | center | justify ] | Horizontal image alignment. |
| scaleW | Any valid float number | Image width scale factor. |
| scaleH | Any valid float number | Image height scale factor. |
| rotation | <angle> | Specifies the rotation angle in degrees. Positive value for clockwise rotation and negative for counterclockwise rotation. |
| breakpage | [true | false] | break page after this image if true. |
▲ The text tag inserts plain text into the document.
If you want to write the < character please use < or > for > character.
<text style="" align="">
</text>
| Property | Values | Description |
| style | Style sheet |
Allows styling information to be included with the rich text for the inserted text. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| align | [ left | right | center | justify ] | Horizontal text alignment. |
▲ The robot tag attaches some extra information about the robot system.
<robot attr="" task="" title="" style="" style2="" align="" regexp="" from="" to="" />
| Property | Values | Description |
| attr | [ name | systemname | station | ip | ip-backup | gateway | subnetmask | type | serial | plc | safety | application | limits-positive | limits-negative | tool | base | profinet | collisions | releases | fm | calibration ] |
Robot's property name to be displayed. Some of the properties return only a single text line (station property prints a station description if defined (See stations for more details). collisions lists the robot-robot interlocks of the programs (VW standard VWKS): AnfVerriegelung, FrgVerriegelung, RoboterFreigabe and the motions MoveLIN_ROB / MovePTP_ROB / MoveCIRC_ROB / MoveABS_ROB, with all numbers \V2 .. \V5; the description is the \Info text. releases lists the station releases: StellungsFreigabe and MoveXXX_FRG, with \Frg2 .. \Frg5. Commented lines are not listed (version 1.9 - before only RoboterFreigabe and the first number of StellungsFreigabe). |
| task | text | The name of the task directory to list available collisions, releases or fm attribute, eg.: TASK1, TASK2, TASK* |
| title | Any valid text | This is a property name displayed before the text value. |
| style | Style sheet |
Allows styling information to be included with the rich text for the property name text. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| style2 | Style sheet |
Allows styling information to be included with the rich text for the inserted property text. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| align | [ left | right | center | justify ] | Horizontal text alignment. |
| regexp | Any valid regular expression |
Finds the matched regular expression in the given robot's attribute and returns the captured text. This can be used to extract a part of a string like the station name from the robot name string. |
| from | Any valid character index |
Returns a substring of the given robot's attribute, starting at the specified position from and leading to the
specified position to. This can be used to extract a part of a string like the station name from the robot name string. |
| to | Any valid character index |
Returns a substring of the given robot's attribute, starting at the specified position from and leading to the
specified position to. This can be used to extract a part of a string like the station name from the robot name string. |
| stationname | [ 1 | 0 ] | Add the station name to the current attribute value. Please refer to the stations tag for more details. |
▲ The breakline tag inserts the break line character at the end of the current line.
<breakline />
▲ The breakpage tag breaks the current page and moves the text cursor to the first line of the next page.
<breakpage />
▲ The date tag is used to insert the current date in the given format.
<date style="" align="" format="" />
| Property | Values | Description |
| style | Style sheet |
Allows styling information to be included with the rich text for the property name text. A limited subset of CSS syntax can be used to change the appearance of the text. Please refer to the resources for more details. |
| align | [ left | right | center | justify ] | Horizontal text alignment. |
| format | Date format |
If empty, it is set to the default value dd.MM.yyyy. Please refer to the Qt online documentation for more details. |
▲ Examples
All listed examples have been generated automatically with our plugin.
K9VDKD110090R01.pdf
▲ Resources