0
Hola @Socavi,
A ver si con éste ejemplo te aclaras más
Supón que tienes una hoja de cálculo como la que adjunto en la imagen, y quieres traspasar los datos a un fichero, que se llama en éste caso FICHERO.DAT, lo primero es que en tu Form, has de insertar con ExcelControl, que se llame CmExcel1, el código para traspasar los datos, que supongo que irá en un ButtomControl, (un botón), sería así:
COBOL Código:
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT OPTIONAL FICHERO ASSIGN TO "FICHERO.DAT" ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC FILE STATUS IS STFIC LOCK IS AUTOMATIC WITH LOCK ON RECORD. DATA DIVISION. FILE SECTION. FD FICHERO IS GLOBAL LABEL RECORD IS STANDARD DATA RECORD IS REG_FIC. 01 REG_FIC. 03 FICCP PIC 9(05). 03 FICPOB PIC X(30). 03 FICPRO PIC X(20). 03 FICPAI PIC X(20). WORKING-STORAGE SECTION. 01 ESTILO PIC S9(5) COMP-5. 01 RETORNO PIC S9(5) COMP-5. 01 LIN PIC 9(9) COMP-5. 01 STFIC PIC XX. PROCEDURE DIVISION. * INICIO. OPEN I-O FICHERO. INITIALIZE REG_FIC. INVOKE CmExcel1 "OpenBook" *> <------ Abrimos la Hoja de cálculo USING "Ruta_y_Nombre_Mi_Fichero-Excel.xls" 1 *> <------ Aquí el número de hoja que queremos abrir RETURNING RETORNO END-INVOKE. IF RETORNO NOT = 0 ADD POW-DMICONERROR POW-DMOK GIVING ESTILO INVOKE POW-SELF "DisplayMessage" USING "*Error: No exsite la hoja de cálculo ..." "ERROR" ESTILO END-INVOKE CLOSE FICHERO INVOKE POW-SELF "CloseForm" EXIT PROGRAM END-IF. MOVE 2 TO LIN. *> <------ Empezamos en la linea 2, porque suponemos que la 1 contiene el encabezado de las celdas PERFORM WITH NO LIMIT * * Como en PWV, no hay ninguna función, que nos indique el final de los datos en una hoja de cálculo * vamos a suponer que si la celda nnn:1, vale 0 o está en blanco, hemos llegado al final de la hoja * * y empezamos a traspasar los datos, leemos las celdas, y las pasamos directamente a los campos del * fichero que a continuación grabaremos * MOVE "Numeric" (LIN 1) OF CmExcel1 TO FICCP IF FICCP = 0 EXIT PERFORM END-IF MOVE "Text" (LIN 2) OF CmExcel1 TO FICPOB MOVE "Text" (LIN 3) OF CmExcel1 TO FICPRO MOVE "Text" (LIN 4) OF CmExcel1 TO FICPAI WRITE REG_FIC *> <----- Grabamos los datos en el fichero INVALID KEY *> <----- Si da error, los regrabamos, por si acaso REWRITE REG_FIC INVALID KEY *> Si da error, informamos del número de FILE-STATUS ADD POW-DMICONERROR POW-DMOK GIVING ESTILO INVOKE POW-SELF "DisplayMessage" USING "Error al Grabar ..." STFIC ESTILO END-INVOKE END-REWRITE END-WRITE ADD 1 TO LIN END-PERFORM. ADD POW-DMICONINFORMATION POW-DMOK GIVING ESTILO. INVOKE POW-SELF "DisplayMessage" USING "Fin del traspaso ..." " ¡ Atención ... !" ESTILO END-INVOKE. INVOKE CmExcel1 "CloseBook". CLOSE FICHERO.
En éste caso, cuando llegue a la línea 17 de la hoja de cálculo, el programa terminará.
Un saludo.-
Marcadores