Guardar libros como de sólo lectura

05/10/2006 - 03:44 por Esteban Dido | Informe spam
Hola,
¿Es posible mediante código que al grabar un libro SIEMPRE se guarde como de
sólo lectura?

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
05/10/2006 - 05:41 | Informe spam
hola, Esteban !

Es posible mediante codigo que al grabar un libro SIEMPRE se guarde como de solo lectura?



[creo que] necesitaras hacerte un re/planteamiento de la situacion -real- que necesitas 'resolver' [me explico]...

1) existen -al menos- dos formas de 'solo lectura' para los archivos de excel...
a) al momento de guardarlos [archivo / guardar como... / buscar en las opciones] y marcar la opcion de:
'recomedar que se abra como de solo lectura' [a la vez que] puedes asignarle una clave contra-escritura al abrirse ;)
b) modificando las propiedades del archivo desde el sistema operativo [NO es exclusivo de excel, sino de windows] ;)

2) si te refieres a cambiar el 'modo de acceso' [exclusivo o no] al archivo EN/durante la sesion de excel...
a) consulta en la ayuda de vba-excel por el metodo .ChangeFileAccess y la propiedad .ReadOnly
b) si estableces [en la sesion] un modo de acceso de solo lectura... -> ActiveWorkbook.ChangeFileAccess xlReadOnly
- NO es posible que el usuario le guarde cambios [seria necesario usar un 'guardar como...' y darle OTRO nombre]
- si suponemos que esta 'guardado' con el metodo anterior... la siguiente vez que se abra... 'regresa' al modo 'xlReadWrite'

comentas 'por donde van los tiros' ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Esteban Dido
06/10/2006 - 01:04 | Informe spam
Hola HM,

El asunto es éste:
Tengo un libro tipo que se usa para facturar, con vínculos a un par de bases
de datos también en Excel. Una vez ingresados los datos y ya impresa la
factura en papel, el libro se "guarda como" con el número de la factura como
nombre de archivo.
Lo que quiero es que si alguien posteriormente abre un libro de una factura
ya impresa no pueda guardar ningún cambio que él mismo haga o que se
produzca debido a una eventual actualización con los vículos que tiene.
Seguramente hay una mejor idea que guardarlo como sólo lectura, pero no la
veo.
Saludos


"Héctor Miguel" escribió en el mensaje
news:
hola, Esteban !

> Es posible mediante codigo que al grabar un libro SIEMPRE se guarde como


de solo lectura?

[creo que] necesitaras hacerte un re/planteamiento de la situacion -real-


que necesitas 'resolver' [me explico]...

1) existen -al menos- dos formas de 'solo lectura' para los archivos de


excel...
a) al momento de guardarlos [archivo / guardar como... / buscar en las


opciones] y marcar la opcion de:
'recomedar que se abra como de solo lectura' [a la vez que] puedes


asignarle una clave contra-escritura al abrirse ;)
b) modificando las propiedades del archivo desde el sistema operativo


[NO es exclusivo de excel, sino de windows] ;)

2) si te refieres a cambiar el 'modo de acceso' [exclusivo o no] al


archivo EN/durante la sesion de excel...
a) consulta en la ayuda de vba-excel por el metodo .ChangeFileAccess


y la propiedad .ReadOnly
b) si estableces [en la sesion] un modo de acceso de solo


lectura... -> ActiveWorkbook.ChangeFileAccess xlReadOnly
- NO es posible que el usuario le guarde cambios [seria necesario


usar un 'guardar como...' y darle OTRO nombre]
- si suponemos que esta 'guardado' con el metodo anterior... la


siguiente vez que se abra... 'regresa' al modo 'xlReadWrite'

comentas 'por donde van los tiros' ?
saludos,
hector.


Respuesta Responder a este mensaje
#3 Héctor Miguel
06/10/2006 - 02:17 | Informe spam
hola, Esteban !

... un libro tipo que se usa para facturar, con vinculos... bases de datos... en Excel
... ingresados los datos... impresa la factura... se "guarda como" con el numero de la factura como nombre de archivo.
... quiero... que si... abre un libro de una factura ya impresa no pueda guardar ningun cambio que el mismo haga
o que se produzca debido a una eventual actualizacion con los viculos que tiene.
Seguramente hay una mejor idea que guardarlo como sólo lectura, pero no la veo.



algunas alternativas [de entre otras posibles]... -> despues de imprimir...
op1: convertir todas las formulas a sus valores y despues hacer el 'guardar como...' -?-
[opcionalmente puedes asignarle clave 'contra escritura'] :))
op2: convertir a imagen el rango 'imprimible' con los datos de la factura 'impresa'... [te ahorras unos cuantos archivos de excel] :))
op3: proveer un formulario para la captura de datos en facturas 'nuevas'... {+}
podrias 'conservar' -solo- los datos de las facturas ya impresas [p.e.] en alguna hoja oculta, mandarlos a un archivo de texto, ... ?
serviria tambien para re-construccion/impresion/... de 'emergencia'...
op_n: ???

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Esteban Dido
06/10/2006 - 02:58 | Informe spam
Hola Héctor
Me gusta la opción1. ¿Podrías ayudarme con el código?. No me quedan claras
las opciones 2 y 3.
Saludos


"Héctor Miguel" escribió en el mensaje
news:#
hola, Esteban !

> ... un libro tipo que se usa para facturar, con vinculos... bases de


datos... en Excel
> ... ingresados los datos... impresa la factura... se "guarda como" con


el numero de la factura como nombre de archivo.
> ... quiero... que si... abre un libro de una factura ya impresa no pueda


guardar ningun cambio que el mismo haga
> o que se produzca debido a una eventual actualizacion con los viculos


que tiene.
> Seguramente hay una mejor idea que guardarlo como sólo lectura, pero no


la veo.

algunas alternativas [de entre otras posibles]... -> despues de


imprimir...
op1: convertir todas las formulas a sus valores y despues hacer el


'guardar como...' -?-
[opcionalmente puedes asignarle clave 'contra escritura'] :))
op2: convertir a imagen el rango 'imprimible' con los datos de la factura


'impresa'... [te ahorras unos cuantos archivos de excel] :))
op3: proveer un formulario para la captura de datos en facturas


'nuevas'... {+}
podrias 'conservar' -solo- los datos de las facturas ya impresas


[p.e.] en alguna hoja oculta, mandarlos a un archivo de texto, ... ?
serviria tambien para re-construccion/impresion/... de


'emergencia'...
op_n: ???

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.


Respuesta Responder a este mensaje
#5 Héctor Miguel
06/10/2006 - 07:58 | Informe spam
hola, Esteban !

Me gusta la opcion1. Podrias ayudarme con el codigo?.
No me quedan claras las opciones 2 y 3.



el procedimiento para la opcion1 puede ser +/- con instrucciones como los ejemplos al final del presente

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
=1) copiar la hoja 'apropiada' a un libro nuevo [p.e.]:
ActiveSheet.Copy [o una hoja 'especifica']...
Worksheets("hoja formato de factura").Copy
nota: cualquiera de las instrucciones anteriores 'genera' un libro nuevo con -solo- la hoja copiada
y el nuevo libro se convierte en el libro 'activo'

2) 'convertir' todas [y cualquiera] de las celdas con formuas a sus valores 'constantes' [libro y hoja nuevos/activos]...
Cells.Copy
Cells.PasteSpecial xlPasteValues
Range("a1").Select
Application.CutCopyMode = False

3) [ahora si] haces el guardar como [opcionalmente puedes proteger hoja/libro, cerrar el libro]...
ActiveWorkbook..SaveAs "ruta y nombre el archivo nuevo.xls", xlWorkbookNormal
ActiveWorkbook.Close

4) -> no te olvides de 'limpiar' las celdas modificables del formato de factura 'original' :))

5) [probablemente] habra 'problemas' si existen objetos incrustados en la hoja con macros asignadas [me explico]...
a) si 'el objeto' lo incrustas en la hoja desde la barra de herramientas 'cuadro de controles'...
el modulo de codigo de 'esa' hoja -tambien- sera copiado EN el libro 'nuevo' [y sera 'operable']
b) si 'el objeto' lo incrustas en la hoja desde la barra de herramientas 'formularios' [o cualquier otra 'figura']...
el codigo que le asignes [OJO:]... SEGUIRA 'haciendo referencia' a la macro EN su modulo y libro 'originales'

es probable que haya algunos datos que estes 'dejando en el tintero' ?

[finalmente] para exportar un grupo de celdas a una imagen con formato GIF o JPG?
una manera +/- 'rapida' seria como la que te expongo al final.
suponiendo que deseas copiar el rango 'B6:D16' de la hoja 'activa'

en un modulo de codigo 'normal' ==Sub CopiarUnRangoAGIF()
Dim Izq As Single, Arr As Single, Ancho As Single, Alto As Single
Application.DisplayAlerts = False
With Range("b6:d16")
Izq = .Left: Arr = .Top: Ancho = .Width: Alto = .Height: .CopyPicture
End With
With ActiveSheet.ChartObjects.Add(Izq, Arr, Ancho, Alto)
.Chart.Paste
.Chart.Export "c:uta y\sub carpeta para\Factura 001.gif"
.Delete
End With
Application.DisplayAlerts = True
End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida