MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
 
 
Herramientas Buscar en Tema Desplegado
Prev Mensaje Previo   Próximo Mensaje Próx
  #1  
Viejo 04/11/11, 07:15:41
NKZero NKZero is offline
Junior Member
 
Fecha de Ingreso: jun 2008
Mensajes: 5
Problemas bloqueando celda excel con OLE

Hola a todos,
os comento mi problema a ver si podéis echarme un cable.
Tengo que bloquear (hacer no editables) todas las celdas de un excel a excepción de unas cuantas que podrá rellenar el usuario. Para ello estoy usando objetos OLE de la siguiente forma:

* Crear el excel
CREATE OBJECT excel 'EXCEL.APPLICATION'.
SET PROPERTY OF excel 'VISIBLE' = 1.
CALL METHOD OF excel 'WORKBOOKS' = workbook.
CALL METHOD OF workbook 'ADD'.
CALL METHOD OF excel 'WORKSHEETS' = sheet
EXPORTING #1 = 1.
CALL METHOD OF sheet 'ACTIVATE'.

* Por cada celda a insertar, creo la referencia, doy un formato y la
* desbloqueo para que sea editable
CALL METHOD OF sheet 'CELLS' = cell
EXPORTING
#1 = gv_row
#2 = p_j.
SET PROPERTY OF cell 'LOCKED' = 0. "Unprotect cell

* Una vez creado el excel.
* Guardo en la ruta deseada
CALL METHOD OF sheet 'SAVEAS'
EXPORTING
#1 = lv_fullpath
#2 = 1.
* Protejo la hoja.
SET PROPERTY OF gv_sheet 'PROTECT' = 1.
CALL METHOD OF application 'QUIT'.

Ahora los problemas:
1 - Necesito que el procesado se haga en fondo pero si lo hago así, el excel se genera pero no se bloquean las celdas
2 - Si no lo hago en fondo, se bloquean las celdas que necesito pero al salir del excel, si no guardo (con el botón guardar del excel), al abrir de nuevo el excel las celdas no están bloqueadas.
3 - Si pongo SET PROPERTY OF gv_sheet 'PROTECT' = 1. antes de guardar con el método 'SAVEAS' me da error al guardar el archivo y no lo genera.
4 - Por último cuando protejo las celdas, las que contienen campos desplegables que no están bloqueadas se me ven mal (me salen todos en una línea).

Bueno, espero que alguien pueda ayudarme,
Un saludo.

PD: No se si esto va en este subforo, si no, siento la equivocación.

EDIT: He observado que si no protejo la hoja, las celdas tienen las propiedades correctamente puestas en el excel (marcadas como bloqueadas unicamente las que deben estar). Por lo tanto el problema es con el SET PROPERTY OF gv_sheet 'PROTECT' = 1. Sabéis alguna otra forma de Proteger una hoja de excel con abap? (opción proteger dentro de la pestaña Revisar en Excel2007).
Gracias de nuevo.

EDIT2: He encontrado la solución, justo antes de guardar con el metodo 'SAVEAS', en vez de usar:
SET PROPERTY OF gv_sheet 'PROTECT' = 1.
Usando
CALL METHOD OF gv_sheet 'PROTECT'
EXPORTING #1 = ''.
Se solucionan todos los problemas que tenía.
Además he ido marcando y desmarcando las celdas que quería proteger y las que no mientras las insertaba (OJO, marcar la propiedad de todas tanto las que si como las que no, así te aseguras que las celdas tienen la opción que quieres y no dependes del por defecto).
IF p_unlock IS INITIAL.
SET PROPERTY OF cell 'LOCKED' = 1. "Desproteger Celda
ELSE.
SET PROPERTY OF cell 'LOCKED' = 0. "Proteger Celda
ENDIF.

Un saludo.

Úlima edición por NKZero fecha: 04/11/11 a las 12:03:01.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 16:06:13.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web