Tengo un pequeño archivo de Excel con VBA. Utilizamos el programador de tareas en Windows para abrir este pequeño archivo que luego ejecuta una macro para abrir, actualizar y guardar varios informes que hemos automatizado. El archivo funciona bien en Windows 2000 y Excel 2003, pero estamos convirtiendo a Windows 7 y Excel 2010. El programador de tareas abre el archivo y luego el archivo abre el informe correspondiente. Parece que se actualiza y luego elimina el informe anterior y guarda el nuevo informe en una ubicación particular. Pero cuando abro el informe actualizado, los datos de la consulta externa no han cambiado. Puedo ejecutar el informe manualmente presionando Actualizar todo, y los datos se actualizan. Además, no encontré ningún error en el VBA. Aquí está el código:
Private Sub Workbook_Open()
Dim wrkNewBook As Workbook
Dim wrkOldBook As Workbook
Dim iCount As Integer
Dim sFileName As String
Dim sReportName As String
Dim iSheetCount As Integer
Dim sWrapperName As String
sWrapperName = ActiveWorkbook.Name
sFileName = CStr(Application.Workbooks(sWrapperName).Sheets(1).Range("FileName").Value)
iSheetCount = CLng("0" & Application.Workbooks(sWrapperName).Sheets(1).Range("NumberOfWorkSheets").Value)
Set wrkOldBook = Application.Workbooks.Open(sFileName)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWorkbook.RefreshAll
Application.Calculate
If iSheetCount > wrkOldBook.Sheets.Count Then
iSheetCount = wrkOldBook.Sheets.Count
End If
While (wrkOldBook.Sheets.Count > iSheetCount)
wrkOldBook.Sheets(wrkOldBook.Sheets.Count).Delete
Wend
Application.ScreenUpdating = True
Application.Calculate
wrkOldBook.SaveAs "W:\SHAREU\Finance\POLR 500 Reports\" & wrkOldBook.Name
wrkOldBook.SaveAs "E:\PUB\EEP\Finance\Cost Reports\" & wrkOldBook.Name
wrkOldBook.Close False
Application.DisplayAlerts = True
Application.Quit
End Sub
¿Hay algo que deba cambiar para que funcione en Excel 2010?
DoEvents
entre líneasApplication.Calculate
ywrkOldBook.SaveAs ...