Iniciar Sesión

Ver la Versión Completa : [Duda] Insertar imagen en documento Word


Xavier
28 de enero de 2016, 01:09
Hola a todos.
Estoy utilizando plantillas Msword, desde PWC, para mis documentos, reemplazando etiquetas por sus valores, el problema es que ahora tengo que insertar una o varias imagenes en cada ficha de cada uno de los artículos y no sé como hacerlo. Alguien me puede indicar cómo hacerlo.
Gracias

Kuk
28 de enero de 2016, 09:09
Xavier, usas un control específico para ello, o lo haces vía COM/OLE?

Xavier
28 de enero de 2016, 22:43
Hola Kuk, lo hago via COM

Dasije
28 de enero de 2016, 22:58
En PowerCOBOL todo lo que sea mover una imagen de una variable a otra, por el momento me es imposible, pero si podrías mirar alguna función si existe para "agregar" una imagen desde el archivo.

Kuk
29 de enero de 2016, 09:49
Xavier, he encontrado esto... Inténtalo a ver qué tal:


WordApp.Selection.InlineShapes.AddPicture (App.Path & "\YourPicture.jpg")

Xavier
29 de enero de 2016, 11:30
Gracias por las respuestas. Lo probaré y ya os diré como ha ido.

Rapinto
29 de enero de 2016, 17:47
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:

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:

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


*
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

Xavier
2 de febrero de 2016, 23:15
Hola Rapinto, gracias por tu código. Estos días estoy con otro proyecto, pero cuando vuelva a retomar el de Word lo tendré en cuenta y, si lo resuelvo, lo publicaré para que otros puedan cogerlo como ejemplo.

Gracias