Conexión de datos ODC con Libro Excel Protegido.

Tengo un problema a la hora de actualizar un libro de excel que es una aplicación con macros y no puedo desproteger ni hoja ni libro de excel porque sino me podrían modificar el diseño de mi aplicación.

Necesito que mi libro de excel se actualize con la conexión Odc por Microsoft Access que tengo vinculada, pero no actualiza y da fallo por que tengo protegida tanto la hoja excel con la que estoy trabajando y también el libro de excel que la integra.

Existe alguna forma por visual basic/excel/access para conseguir que mi conexión actualize sin que tenga que desproteger mi hoja excel.

Respuesta
1

Puedes usar la orden userinterfaceonly:=True, para proteger la hoja de los usuarios, pero no cuando ejecutas código de VBA.

Por ejemplo:

Sub macro()

Sheets("Hoja1").select    'Hoja que deseas proteger para que usuario no modifique

Pero el código de VBA que desea ejecutar si

ActiveSheet.Protect Password:="123", userinterfaceonly:=True 

Range("g4"). Clear 'Observa queue mediante código permite borrar el contenido de la

Celda g4
 End Sub

Hola buenos días, Willcoss.

Te comento la hoja de calculo que estoy realizando, tiene una conexión de datos odc mediante una base de datos access, que a la hora de actualizar me dice que la hoja esta protegida y por lo tanto no actualiza los datos, el tema es que no puedo dejar desprotegida la hoja de calculo por que sino los botones con sus correspondientes macros estarían descubiertos  para los usuarios.

Tu solución me parece muy buena pero no funciona poniéndola en ThisWorkBook, no me actualiza los datos en el libro excel y me da error, por lo tanto sigo igual.

Situación Actual:

El libro lo tengo protegido, pero la hoja donde tengo los botones y las macros la tengo desprotegida, el código basic también tengo protegido el proyecto para que no se pueda acceder al código.

Necesitaría una solución para actualizar los datos externos. te adjunto código de una de las macros, por si sirve de ayuda.

Sub BOROX()
ActiveSheet.Unprotect Password:="-"
'Seleccionamos las columnas a ocultar
Range("F:F,G:G,H:H,J:J,QUE:QUE,L:L,M:M,N:N,O:O,P:P,QUE:QUE,R:R,ES:ES,T:T,U:U,V:V,W:W,POR:POR,Y:Y").Select
'Las ocultamos
Selection.EntireColumn.Hidden = True
'Nos situamos en A2
Range("A2").Select
ActiveSheet.Protect Password:="-"
End Sub

Muchas gracias por vuestra atención, un saludo.

Te sugiero que desprotejas la hoja donde esta la consulta, luego haces la consulta y vuelves a proteger la hoja. El código quedaría así:

Sub INICIAR()
'
' INICIAR Macro
' Macro grabada el 26/05/2006 por WILLIAM COSSIO
Sheets("MVTOS").Select  'hoja donde se hace la consulta de access

Activesheet.unprotect password:="123"  'Desprotege la hoja que tiene clave 123
 Range("A2").Select
 Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select  'Selecciona todas  las celdas
Selection.ClearContents  'Borra las celdas eseleccionadas
Range("A1").Select
'====================================================
Selection.QueryTable.Refresh BackgroundQuery:=False  'orden para actualizar  la consulta'====================================================

activesheet.protect password:="123"  ' Orden que vuelve y protege la hoja  MVTOS

END SUB

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas