Foros del Web » Soporte técnico » Ofimática »

Propiedad SAVED no funciona

Estas en el tema de Propiedad SAVED no funciona en el foro de Ofimática en Foros del Web. Hola a todos. Tengo un libro de Excel con más de 100 hojas donde cada una representa un certificado de calidad. El libro está automatizado ...
  #1 (permalink)  
Antiguo 23/07/2009, 10:15
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Propiedad SAVED no funciona

Hola a todos.
Tengo un libro de Excel con más de 100 hojas donde cada una representa un certificado de calidad. El libro está automatizado con VBA para Excel: Tiene celdas protegidas en las que sólo se puede escribir si el usuario selecciona una opción de un cuadro combo insertado en determinadas columnas, tiene botones de comando programados para ejecutar ciertas tareas y tiene varios eventos programados para determinadas actividades como validación de los datos de una celda, etc.

Por otro lado tengo una aplicación en VB6.0 que accede a este y a otros libros de Excel para realizar búsquedas y finalmente elaborar un nuevo certificado de calidad. El caso es que cada vez que se abre uno de estos libros de Excel automatizados con código VBA, desde la aplicación VB6.0 o bien haciendo click directamente sobre el libro, al tratar de cerrarlo (así no haya hecho ningún cambio sobre el mismo) me aparece el mensaje típico que invita a guardar los cambios hechos sobre el libro. Esto es bastante fastidioso, además de que el usuario del programa hecho en VB6.0 debe estar pendiente de que aparezca el bendito mensaje para cerrarlo, de modo que la aplicación VB6.0 continue su curso normal.

Dentro de la aplicación VB6.0 coloqué en TRUE el valor de la propiedad SAVED del objeto Excel.Application con el cual abro el libro, pero ni modo, Excel se niega a reconocer al libro como "ya salvado" y continua arrojando el mensaje de invitación a guardar los cambios hechos sobre el libro que tan solo es abierto para realizar operación de lectura.No tengo idea de por qué ocurre esto, pues, he probado el uso de la propiedad SAVED con una aplicación VB6.0 a modo de ejemplo, con otro libro de Excel (sin código VBA) en una de cuyas hojas doy la orden de escribir algo desde el código de la aplicación VB6.0 y SÍ funciona, es decir, Excel ignora el cambio en los datos de la hoja y no pide salvar antes de cerrar.

Por favor, si alguien tiene conocimiento de cómo ayudarme a resolver este problema le estaré completamente agradecido.
  #2 (permalink)  
Antiguo 23/07/2009, 11:24
Colaborador
 
Fecha de Ingreso: agosto-2004
Mensajes: 1.611
Antigüedad: 19 años, 8 meses
Puntos: 47
Respuesta: Propiedad SAVED no funciona

Bienvenid@ Turbovba:
No soy muy ducho en ésto de las macros; pero me parece que la Propiedad Saved no aplica a un objeto Excel.Application; la propiedad Saved se usa para objetos Excel.Workbook...
Revísalo y ya dirás sí estoy en lo correcto.
Saludos...
  #3 (permalink)  
Antiguo 23/07/2009, 12:36
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Propiedad SAVED no funciona

Cita:
Iniciado por uzziber Ver Mensaje
Bienvenid@ Turbovba:
No soy muy ducho en ésto de las macros; pero me parece que la Propiedad Saved no aplica a un objeto Excel.Application; la propiedad Saved se usa para objetos Excel.Workbook...
Revísalo y ya dirás sí estoy en lo correcto.
Saludos...

Gracias, Uzziber por tomarte el tiempo de responderme.

Sí tienes razón, ocurre que me expliqué mal, aunque mi código y sus respectivas referencias a propiedades de objetos está bien. A veces me confunde un poco una instrucción como esta:

xlappCertificaGeneral.Workbooks(NombreLibroCertAct ual).Saved = True

En esta instrucción puedes ver que tienes completamente toda la razón, pues la propiedad SAVED pertenece al objeto WORKBOOK y no al objeto EXCEL.APPLICATION representado en mi código por la variable xlappCertificaGeneral.

La verdad estoy trabajando tanto con VBA como con VB 6.0. Pero, el inconveniente no me surge con VBA. Más bien viene de mi código en VB 6.0, pues, estoy accediendo a Excel como componente ActiveX desde mi aplicación hecha en Visual Basic 6.0. A continuación te copio una secuencia de código que me permite trabajar con Excel desde VB 6.0:

Dim xlappCertificaGeneral As Excel.Application

.
.
.


' Creación del objeto
Set xlappCertificaGeneral = CreateObject("Excel.Application")


' Apertura del libro (objeto Workbook)
xlappCertificaGeneral.Workbooks.Open StrRutaCertificaGeneral, , True, , "", ""

. ' Instrucciones de lectura sobre el libro abierto
. ' Instrucciones de lectura sobre el libro abierto
. ' Instrucciones de lectura sobre el libro abierto

' Obtención del nombre del libro que pretendemos cerrar
NombreLibroCertActual = ObtenerNombreLibro(StrRutaCertificaGeneral)


' Cambio del valor de la propiedad SAVED del libro
xlappCertificaGeneral.Workbooks(NombreLibroCertAct ual).Saved = True


' Cierre del libro
xlappCertificaGeneral.Workbooks(NombreLibroCertAct ual).Close


xlappCertificaGeneral.Quit ' Cierra la aplicacion de Excel


' Borrar la variable de objeto, liberándola de la memoria
Set xlappCertificaGeneral = Nothing


Gracias nuevamente y espero en esta oportunidad haberme explicado mejor.
  #4 (permalink)  
Antiguo 23/07/2009, 13:08
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Propiedad SAVED no funciona

He encontrado una solución. Utilicé la propiedad DisplyAlerts del objeto Excel.Application para evitar que Excel envie mensajes de alerta cuando se intenta cerrar un libro de solo lectura.

NombreLibroCertActual = ObtenerNombreLibro(StrRutaCertificaGeneral)
xlappCertificaGeneral.Workbooks(NombreLibroCertAct ual).Saved = True
xlappCertificaGeneral.DisplayAlerts = False
xlappCertificaGeneral.Workbooks(NombreLibroCertAct ual).Close
xlappCertificaGeneral.Quit ' Cierra la aplicacion de Excel
Set xlappCertificaGeneral = Nothing

Bienvenida será cualquier otra solución o sugerencia.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:21.