Access - Imprimir archivo de excel

 
Vista:
sin imagen de perfil
Val: 38
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Imprimir archivo de excel

Publicado por Angel Andrés (113 intervenciones) el 24/12/2016 00:32:59
Hola gente y muchas gracias desde ya por su colaboración. Tengo un botón que imprime una hoja de MS Excel. Utilizo el siguiente código:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub cmdPrintExcel_Click()
    Dim appExcel As New Excel.Application
    Dim Libro As Excel.Workbook
    Dim Hoja As Excel.Worksheet
    Set Libro = appExcel.Workbooks.Open("W:\Report\NumGral.xlsx")
    Set Hoja = Libro.Worksheets.Item(2)
    Hoja.PrintOut
    Libro.Close SaveChanges:=False
    Set Hoja = Nothing
    Set Libro = Nothing
    Set appExcel = Nothing
End Sub

Este código funciona perfecto. Ahora bien a este archivo de Excel le quiero agregar una contraseña de ingreso y cómo este tiene campos calculados desde otro archivo, necesito que ejecute el comando Actualizar Todo (datos) al abrirse. Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Imprimir archivo de excel

Publicado por Neckkito (1157 intervenciones) el 02/01/2017 18:20:12
Puedes forzar la actualización directamente desde el Excel y sin necesidad de añadir código. Para ello (esto solo lo tendrás que hacer una vez):

1.- Abre el Excel
2.- Vete a Menú Datos
3.- En la cinta de opciones vete al grupo de opciones "Conexiones" y haz clic sobre el botón "Propiedades"
4.- Ahí verás un apartado llamado "Control de actualizaciones", que te da varias opciones. Una de ellas es "Actualizar al abrir el archivo". Marca su check

Con eso, cada vez que abras ese Excel, se te actualizará el archivo.

¿Qué problema puedes encontrarte? Pues que la ejecución del código sea tan rápida que el propio código no dé tiempo a tu libro de Excel a actualizarse. Si te sucede eso tienes que retrasar el PrintOut del Excel. Para ello puedes escribir el siguiente bloque de código antes del PrintOut:

Dim miObjetivo as date 'Esta línea la puedes añadir al primer bloque de declaración de variables
miObjetivo=dateadd("s", 2, now) '2 es el número de segundos de espera. Tienes que probar el número de segundos óptimo
do until miObjetivo<now
doevents
loop

Con el código anterior das tiempo al Excel para que actualice todo lo que tenga que actualizar, teniendo en cuenta que el número de segundos deberás fijarlo en función del valor que te funcione correctamente.

A ver si con esto te funciona.

Un saludo,

Neckkito
http://bit.ly/neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar