Abrir archivo excel automáticamente a las 10:00 AM

Quisiera saber si hay forma de poner un código en VB para que abra automáticamente un Archivo Excel, todos los días a las 10:00 AM, he leído por la red que poniendo un timer, pero no he logrado hacerlo, la ruta del archivo es C:\Documents and Settings\Desktop\Administración 2011\CORTES DE CAJA\AGOSTO, además que el archivo que abra sea el del nombre que aparece en la Celda A1.
Espero su respuesta, y agradecimiento si es posible su ayuda.

1 respuesta

Respuesta
2
Excel no tiene control timer, tendrías que hacerlo vía código... y de todas maneras para que tener un bucle contando segundos si para abrir archivos puedes utilizar el panel de tareas programadas de windows. Que ya hace eso. O sea para que escribir código para una labor que ya windows hace
Entiendo, mi Problema es que la PC donde lo deseo hacer no tiene esta opción pues es una PC IBM, además esta en Ingles y realmente por más que le he buscado no encuentro esta opción en el Windows que tiene instalada la PC, por ello opte a un código de VB
De igual manera agradezco tu interés y pronta respuesta, espero aclaración o ayuda si puedes para configurar con el Windows que tengo, si le doy click secundario a mi PC dice en Propiedades System: Windows Embbeded POSReady 2009, Version 2.0 Service Pack 3.
Atentamente
Enrique Castro
Mmmm ya veo.. ese es un windows incrustado!.
Si presionas F1 y pones "Control Panel" o "scheduled Tasks" debería aparecer la info relacionada primero al panel de control o trareas programadas ( si es que esa versión tiene la aplicación). Revisa y me cuentas... antes de ponerme a editar código
Muchas gracias, ya he logrado crear una tarea programada y me ha funcionado bien, mi problema es que a diario el nombre del archivo cambia, pues el nombre que se le establece es la fecha del día, por ejemplo el archivo hoy se llama 20-08-2011, mañana se llamará 21-08-2011, alguna idea de lo que puedo realizar o como programar la tarea para que abra de la carpeta el archivo que tenga la fecha del sistema.
Nuevamente agradezco mucho tu ayuda.
Mmmm, vaya no contaba con tu astucia, je, je, je. Bueno, en ese caso no queda más que meter mano a visual basic
Bueno probemos esto. Tu propio panel de tareas programadas
En un libro ( piede ser uno nuevo o bien en el que uses a diario), que debas tener abierto al menos hasta pasada las 10:00 am para que funcione lo que deseas, debes hacer lo siguiente
Inserta una hoja con el nombre de "TAREAS" así en mayúscula pero sin comillas
En esa hoja dispondrás los siguiente rótulos:
celda A1 = Fecha
B1=hora
c1 =Ruta
d1=estado
Ahora desde la fila 2 hacia abajo como ya dedujiste completas la info para cada rotulo: ejemplo:
A2= 22-08-2011
b2=10:00
c= c:\miarchivo.xls
d2=se deja vacia
De esta forma puedes programar la aptertura de ese archivo para todo el mes insertando la ruta y nombre y como ya sabes que cambiara todos los días te anticipas a ese evento digitando esa parte del nombre archivo que cambiara.
¿Se entiende?.
Ahora veamos el código:
Desde el editor de Visual basic (ALT+F11) insertaras un modulo y en este modulo pegas esto:
Option Explicit
Public InicialTime As Date
Public EarlTime As Date
' Declaración del api ShellExecute
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
'Constantre para el modo en que se abre la ventana: Normal
Public Const SW_SHOWNORMAL = 1
Sub abrir()
Dim t As Integer
Dim r As Range
Dim extension As String
Dim ruta As String
t = Application.WorksheetFunction.CountA(Sheets("TAREAS").Range("A1" & ":" & "A65536"))
If t = 0 Then cancela_tareas: Exit Sub
For Each r In Sheets("TAREAS").Range("A2" & ":" & "A" & t)
extension = Trim(UCase(Mid(r.Offset(0, 2), Len(r.Offset(0, 2)) - 2)))
ruta = Trim(r.Offset(0, 2))
Select Case extension
Case Is = "XLS"
If Time >= CDate(r.Offset(0, 1)) And r.Offset(0, 3) <> "Ejecutado" And Date = CDate(r) Then
ShellExecute Application.hwnd, "Open", ruta, _
vbNullString, _
vbNullString, _
SW_SHOWNORMAL
r.Offset(0, 3) = "Ejecutado" '/ abrir un dcTo Excel
End If
Case Is = "DOC"
If Time >= CDate(r.Offset(0, 1)) And r.Offset(0, 3) <> "Ejecutado" And Date = CDate(r) Then
ShellExecute Application.hwnd, "Open", ruta, _
vbNullString, _
vbNullString, _
SW_SHOWNORMAL
r.Offset(0, 3) = "Ejecutado"
End If
Case Is = "TXT"
If Time >= CDate(r.Offset(0, 1)) And r.Offset(0, 3) <> "Ejecutado" And Date = CDate(r) Then
ShellExecute Application.hwnd, "Open", ruta, _
vbNullString, _
vbNullString, _
SW_SHOWNORMAL
r.Offset(0, 3) = "Ejecutado"
End If
End Select
Next
Set r = Nothing
Sheets("TAREAS").Range("g1") = Time
If Time >= "10:30:00" Then cancela_tareas ' apaga el cronometro a las 10:30 por si se teo olvida cancelar el cronometro
End Sub
Sub tareas()
EarlTime = Now + TimeSerial(0, 1, 0)
Application.OnTime EarlTime, "tareas"
abrir
End Sub
Sub cancela_tareas()
On Error Resume Next
Application.OnTime EarlTime, "tareas", , False
End Sub
Ahora debes dar doble click al objeto "ThisWorkbook" y en al ventana que se te abrió pegas esto:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'detiene cronometro tareas programadas
cancela_tareas
End Sub
Grabas el libro y ya.
Ahora tienes 3 nuevas macros:
- Tareas
- Abrir
- cancela_tareas
La primera inicia un "cronometro" utilizando el método on time de excel
La segunda evalúa las entradas ingresadas en la hoja TAREA esto lo realiza barriendo el rango de col A y cotejando la fecha y hora más el estado de col D
El intervalo de barrido es cada 1 minuto, no amerita creo hacerlo cada segundo. Si deseas modificar el intervalo debes modificar la linea
EarlTime = Now + TimeSerial(0, 1, 0)
En donde los números entre paréntesis son hh, mm, ss
El ultimo macro, coo su nomber lo dice, cancela o detiene el cronometro
Bien.
Cuando el cronometro encuentra una fecha y hora idéntica o superior ( en hora) a la de sistema en el momento del barrido, ejecutara la apertura del archivo "correctamente" indicado en la columna de ruta, siempre y cuando en la correspondiente celda de columna D este vacía o tenga algún valor distinto de la cadena "Ejecutado".
Cada vez que abra un archivo marcara esa linea con esa cadena, para no volver a abrirlo en el siguiente barrido.
Bueno, eso es todo.
Así como esta el macro, puedes programar aperturas de archivos xls, doc, txt.
Bye

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas