Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Duda] Insertar imagen en documento Word (https://www.cobolforo.es/showthread.php?t=315)

Xavier 28 de enero de 2016 01:09

Insertar imagen en documento Word
 
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:

Código VB:
  1. 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:

Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01  EXCEL              OBJECT REFERENCE OLE.
  3.  01  WORKBOOK           OBJECT REFERENCE OLE.
  4.  01  SHEETS             OBJECT REFERENCE OLE.
  5.  01  WORKSHEET          OBJECT REFERENCE OLE.
  6.  01  CELL               OBJECT REFERENCE OLE.
  7.  01  SHAPES             OBJECT REFERENCE OLE.
  8.  01  OBJRANGE           OBJECT REFERENCE OLE.
  9.  01  FITRANGE           OBJECT REFERENCE OLE.
  10.  01  APPLICATION                    PIC X(20) VALUE "EXCEL.APPLICATION".
  11.  01  OLE-TRUE                       PIC 1(1)  BIT VALUE B"1".
  12.  01  FILLER                         PIC 1(7)  BIT.        
  13.  01  OLE-FALSE                      PIC 1(1)  BIT VALUE B"0".
  14.  01  FILLER                         PIC 1(7)  BIT.        
  15.  01  ARRAY-ROW                      PIC S9(9) COMP-5.
  16.  01  ARRAY-COL                      PIC S9(9) COMP-5.
  17.  01  VAL                            PIC X(256).
  18.  01  S-INDEX                        PIC S9(4) COMP-5 VALUE 1.
  19.  01  INIRANGE                PIC X(13)          VALUE "A00001:A00001".
  20.  01  ROWVAL                  PIC 9(005).
  21.  01  ZROWVAL                 PIC ZZZZZ.
  22.  01  XROWVAL   REDEFINES ZROWVAL   PIC X(005).
  23.  01  CONTACHR                PIC 9(005).
  24.  01  LOCCHR                  PIC 9(005).
  25.  01  ROW-HEIGHT               PIC 9(005).
  26.  01  ROW-WIDTH                PIC 9(005).
  27. *
  28.  01   FOTONUM                PIC X(256).
  29.  01   FOTOEXTENSION          PIC X(032).
  30.  01   FOTONAME               PIC X(256).
  31.  01   PATH-IMAGE             PIC X(256).
  32.  01   IMAGESIZE              PIC 9(018)    VALUE ZERO.
  33. *
  34.  01   WSLEFT                 PIC S9(005)  COMP-5.
  35.  01   WSTOP                  PIC S9(005)  COMP-5.
  36.  01   WSWIDTH                PIC S9(005)  COMP-5.
  37.  01   WSHEIGHT               PIC S9(005)  COMP-5.
  38. ****  LINKTO E SAVEWITH 0 = FALSE -1 = TRUE (NÃO PODEM SER AMBOS 0
  39.  01   LINKTO                 PIC S9(005)  COMP-5    VALUE 0.
  40.  01   SAVEWITH               PIC S9(005)  COMP-5    VALUE -1.

Na Procedure Division:

Código COBOL:
  1.        INVOKE OLE "CREATE-OBJECT" USING APPLICATION RETURNING EXCEL.
  2.        INVOKE EXCEL "GET-WORKBOOKS" RETURNING WORKBOOK.
  3.        INVOKE WORKBOOK "ADD"                 RETURNING WORKBOOK.
  4.        INVOKE WORKBOOK "GET-WORKSHEETS" RETURNING SHEETS.
  5.        INVOKE SHEETS "GET-ITEM" USING S-INDEX   RETURNING WORKSHEET.
  6. *
  7.        INVOKE EXCEL "SET-VISIBLE" USING OLE-TRUE.
  8. *
  9. *      INVOKE WORKSHEET "GET-SHAPES"  RETURNING SHAPES.
  10. *

Em INIRANGE deve ser colocada a Linha/Coluna

Código COBOL:
  1. *
  2.              IF INIRANGE NOT = SPACE
  3.                   INVOKE WORKSHEET "GET-RANGE" USING INIRANGE RETURNING OBJRANGE
  4.                   INVOKE OBJRANGE "ACTIVATE"
  5.                   MOVE 64  TO ROW-HEIGHT
  6.                   MOVE 20 TO ROW-WIDTH
  7.                   INVOKE OBJRANGE "SET-RowHeight"    USING ROW-HEIGHT
  8.                   INVOKE OBJRANGE "SET-ColumnWidth"  USING ROW-WIDTH
  9.              END-IF
  10. *
  11.              IF  VAL NOT = SPACE
  12.                   INVOKE WORKSHEET "GET-SHAPES" RETURNING SHAPES
  13.  
  14.                   INVOKE SHAPES "ADDPICTURE" USING VAL LINKTO SAVEWITH WSLEFT WSTOP WSWIDTH WSHEIGHT
  15.                   ADD 64 TO WSTOP
  16.              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


La franja horaria es GMT +2. Ahora son las 14:39.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.