0

![]() |
![]() |
Super Moderador |
¿Alguien sabe cómo puedo saber el número de filas y columnas que hay en una hoja de cálculo?, estoy usando el componente "ExcelConection" para importar unos datos, pero no sé cual es el último dato que hay.
Gracias
Un saludo.-
![]() |
![]() |
Administrador |
@Josber, has intentado preguntando por SPACES o LOW-VALUES de una celda que sabes que en dicha fila (por ejemplo la 1) siempre debe estar informada?
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Guardián del Foro |
Hola:
Adhiero a lo que dice KUK. no veo otra forma.
Si buscás cómo hacer una macro desde excel para ir al ultimo dato, en todos lados vi usan un par de funciones para ir a la última fila posible (fila 1048576) y después otra para ir hacia atrás y encontrar el primer dato.
Saludos. Fito...
![]() |
![]() |
Super Moderador |
Kuk, lo que dices tú es lo que tengo hecho, pero preguntando si el tamaño del dato es 0, porque preguntando por low-values, no funcionaba, el problema es que pueden haber, por ejemplo 20 lineas en blanco por el medio sin yo saberlo, y lo que dice fito, me parecería un bucle muuuuuy largo, con un retardo enorme, teniendo en cuenta que, como mucho la hoja tendrá 1000 lineas, aunque puede tener 50, 1000 o 25000, algo que no sé de antemano.
Gracias, seguiré buscando.
Un saludo.-
![]() |
![]() |
Administrador |
@Josber, el problema es que no se puede saber realmente, ni Excel lo sabe como tal. Es difícil trabajar con una hoja Excel de tamaño variable. Deberías de fijar un estándar... Si no es posible, no hay otra manera que buscar. Si sabes el máximo de "ancho", por ejemplo 1000, buscas de 1000 para atrás como decía @Fito.
En cuanto a LOW-VALUES, este es alfanumérico y equivale a X"00". Si no funciona, mira con H"00" (numérico).
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Gran amigo y Guru de COBOL |
Josber,
Usando a ligação ao Excel por COM/OLE2 penso que é possível.
Eu tenho algum código em que utilizo o "Range" para formatar a folha de Excel:
Na Working:
Na PROCEDURE:COBOL Código:
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 COLUMNS OBJECT REFERENCE OLE. 01 WCOLUMN OBJECT REFERENCE OLE. 01 OBJRANGE OBJECT REFERENCE OLE. 01 FITRANGE OBJECT REFERENCE OLE. ******* 01 ARRAYOBJ OBJECT REFERENCE COM-ARRAY. 01 LONG-INT-TYPE PIC S9(9) COMP-5 VALUE 12. 01 ARRAY-DIMENSION PIC S9(9) COMP-5 VALUE 2. 01 AXIS-1 PIC S9(9) COMP-5 VALUE 22. 01 AXIS-2 PIC S9(9) COMP-5 VALUE 22. 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.
COBOL Código:
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.
COBOL Código:
INVOKE WORKSHEET "GET-RANGE" USING INIRANGE RETURNING OBJRANGE. INVOKE OBJRANGE "SET-VALUE" USING ARRAYOBJ. ******* ************ CALCULAR O RANGE DE CADA COLUNA PARA FORMATAR CAMPO ************ UTILIZANDO O RANGE DAS COLUNAS/LINHAS UTILIZADAS ************ VAI FAZER O AUTOFIT (ALARGAR AS COLUNAS) ******* INVOKE WORKSHEET "GET-USEDRANGE" RETURNING OBJRANGE. INVOKE OBJRANGE "GET-ENTIRECOLUMN" RETURNING FITRANGE. INVOKE FITRANGE "AUTOFIT".
Se puderes utilizar COM/OLE2 pode ser que se consiga fazer o que pretendes.
Un saludo,
Rui Pinto
Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)
Marcadores