Xavier,
Tenho um exemplo dum programa que fiz, mas passa a imagem para Excel.
Penso que no Word será parecido, por isso aqui vai o exemplo:
Código COBOL:
WORKING-STORAGE SECTION.
01 EXCEL OBJECT REFERENCE OLE.
01 WORKBOOK OBJECT REFERENCE OLE.
01 SHEETS OBJECT REFERENCE OLE.
01 WORKSHEET OBJECT REFERENCE OLE.
01 CELL OBJECT REFERENCE OLE.
01 SHAPES OBJECT REFERENCE OLE.
01 OBJRANGE OBJECT REFERENCE OLE.
01 FITRANGE OBJECT REFERENCE OLE.
01 APPLICATION PIC X(20) VALUE "EXCEL.APPLICATION".
01 OLE-TRUE PIC 1(1) BIT VALUE B"1".
01 FILLER PIC 1(7) BIT.
01 OLE-FALSE PIC 1(1) BIT VALUE B"0".
01 FILLER PIC 1(7) BIT.
01 ARRAY-ROW PIC S9(9) COMP-5.
01 ARRAY-COL PIC S9(9) COMP-5.
01 VAL PIC X(256).
01 S-INDEX PIC S9(4) COMP-5 VALUE 1.
01 INIRANGE PIC X(13) VALUE "A00001:A00001".
01 ROWVAL PIC 9(005).
01 ZROWVAL PIC ZZZZZ.
01 XROWVAL REDEFINES ZROWVAL PIC X(005).
01 CONTACHR PIC 9(005).
01 LOCCHR PIC 9(005).
01 ROW-HEIGHT PIC 9(005).
01 ROW-WIDTH PIC 9(005).
*
01 FOTONUM PIC X(256).
01 FOTOEXTENSION PIC X(032).
01 FOTONAME PIC X(256).
01 PATH-IMAGE PIC X(256).
01 IMAGESIZE PIC 9(018) VALUE ZERO.
*
01 WSLEFT PIC S9(005) COMP-5.
01 WSTOP PIC S9(005) COMP-5.
01 WSWIDTH PIC S9(005) COMP-5.
01 WSHEIGHT PIC S9(005) COMP-5.
**** LINKTO E SAVEWITH 0 = FALSE -1 = TRUE (NÃO PODEM SER AMBOS 0
01 LINKTO PIC S9(005) COMP-5 VALUE 0.
01 SAVEWITH PIC S9(005) COMP-5 VALUE -1.
Na Procedure Division:
Código COBOL:
INVOKE OLE "CREATE-OBJECT" USING APPLICATION RETURNING EXCEL.
INVOKE EXCEL "GET-WORKBOOKS" RETURNING WORKBOOK.
INVOKE WORKBOOK "ADD" RETURNING WORKBOOK.
INVOKE WORKBOOK "GET-WORKSHEETS" RETURNING SHEETS.
INVOKE SHEETS "GET-ITEM" USING S-INDEX RETURNING WORKSHEET.
*
INVOKE EXCEL "SET-VISIBLE" USING OLE-TRUE.
*
* INVOKE WORKSHEET "GET-SHAPES" RETURNING SHAPES.
*
Em INIRANGE deve ser colocada a Linha/Coluna
Código COBOL:
*
IF INIRANGE NOT = SPACE
INVOKE WORKSHEET "GET-RANGE" USING INIRANGE RETURNING OBJRANGE
INVOKE OBJRANGE "ACTIVATE"
MOVE 64 TO ROW-HEIGHT
MOVE 20 TO ROW-WIDTH
INVOKE OBJRANGE "SET-RowHeight" USING ROW-HEIGHT
INVOKE OBJRANGE "SET-ColumnWidth" USING ROW-WIDTH
END-IF
*
IF VAL NOT = SPACE
INVOKE WORKSHEET "GET-SHAPES" RETURNING SHAPES
INVOKE SHAPES "ADDPICTURE" USING VAL LINKTO SAVEWITH WSLEFT WSTOP WSWIDTH WSHEIGHT
ADD 64 TO WSTOP
END-IF
Talvez este exemplo ajude,
Un Saludo,
Rui