Macros que al ejecutarse se detiene y aparece este mensaje: error '-2147023170(800706be) en tiempo de ejecución: error de automarización
publicado
Tengo un código VBA para una macros que tiene que colocar los números en forma consecutiva desde la fila 3239 hasta la 3850, pero solo en las columnas A, B, C y D. Ejemplo: el único rango que tiene números es el A3238:D3238, y son 34, 36, 38, 40. La macro hace que el rango A3239:D3239 aparezcan los números 35, 37, 39, 41, así hasta terminar en la fila 3850 o rango A3850:D3850. Tiene que ejecutarse en una carpeta especifica que tiene más de 70 mil archivos xlsx, de 2000 kb cada uno, y tienen una sola hoja. Lo hace, pero siempre se detiene cuando lo ha hecho en 9250 archivos, mostrando este mensaje: error '-2147023170(800706be) en tiempo de ejecución: error de automatización, Por lo que tengo que sacar los archivos que ya hizo el cambio, y volver a ejecutarla, y así solo lo realiza en 9250 archivos, y no en todos los archivos de la carpeta, Les dejo el código, a ver si me pueden alumbrar en que está fallando. La rapidez es importante y este código lo hace, pero siempre se detiene cuando ha hecho 9250 archivos. Gracias desde ya.
Sub SumarEnRangoOptimizado()
Dim folderPath As String
Dim fileName As String
Dim excelApp As Object
Dim wb As Object
Dim ws As Object
' Carpeta que contiene los archivos
folderPath = "D:\Carpeta\"
' Deshabilitar actualizaciones de pantalla y cálculos automáticos
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' Crear una instancia de Excel Application
Set excelApp = CreateObject("Excel.Application")
excelApp.DisplayAlerts = False ' Desactivar las alertas
' Iterar sobre los archivos en la carpeta
fileName = Dir(folderPath & "\*.xlsx")
Do While fileName <> ""
' Abrir el archivo
Set wb = excelApp.Workbooks.Open(folderPath & "\" & fileName)
Set ws = wb.Sheets(1) ' Primera hoja de trabajo
' Aplicar la fórmula directamente en el rango
With ws
.Range("A3239:D3850").Formula = "=A$3238 + (ROW()-3238)"
.Range("A3239:D3850").Value = .Range("A3239:D3850").Value ' Convertir las fórmulas en valores
End With
' Cerrar el archivo sin guardar cambios
wb.Close SaveChanges:=True
' Obtener el siguiente archivo en la carpeta
fileName = Dir
Loop
' Cerrar la instancia de Excel Application
excelApp.Quit
Set excelApp = Nothing
' Habilitar actualizaciones de pantalla y cálculos automáticos
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "La operación se ha completado en todos los archivos de la carpeta.", vbInformation
End Sub
Tengo un código VBA para una macros que tiene que colocar los números en forma consecutiva desde la fila 3239 hasta la 3850, pero solo en las columnas A, B, C y D. Ejemplo: el único rango que tiene números es el A3238:D3238, y son 34, 36, 38, 40. La macro hace que el rango A3239:D3239 aparezcan los números 35, 37, 39, 41, así hasta terminar en la fila 3850 o rango A3850:D3850. Tiene que ejecutarse en una carpeta especifica que tiene más de 70 mil archivos xlsx, de 2000 kb cada uno, y tienen una sola hoja. Lo hace, pero siempre se detiene cuando lo ha hecho en 9250 archivos, mostrando este mensaje: error '-2147023170(800706be) en tiempo de ejecución: error de automatización, Por lo que tengo que sacar los archivos que ya hizo el cambio, y volver a ejecutarla, y así solo lo realiza en 9250 archivos, y no en todos los archivos de la carpeta, Les dejo el código, a ver si me pueden alumbrar en que está fallando. La rapidez es importante y este código lo hace, pero siempre se detiene cuando ha hecho 9250 archivos. Gracias desde ya.
Sub SumarEnRangoOptimizado()
Dim folderPath As String
Dim fileName As String
Dim excelApp As Object
Dim wb As Object
Dim ws As Object
' Carpeta que contiene los archivos
folderPath = "D:\Carpeta\"
' Deshabilitar actualizaciones de pantalla y cálculos automáticos
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' Crear una instancia de Excel Application
Set excelApp = CreateObject("Excel.Application")
excelApp.DisplayAlerts = False ' Desactivar las alertas
' Iterar sobre los archivos en la carpeta
fileName = Dir(folderPath & "\*.xlsx")
Do While fileName <> ""
' Abrir el archivo
Set wb = excelApp.Workbooks.Open(folderPath & "\" & fileName)
Set ws = wb.Sheets(1) ' Primera hoja de trabajo
' Aplicar la fórmula directamente en el rango
With ws
.Range("A3239:D3850").Formula = "=A$3238 + (ROW()-3238)"
.Range("A3239:D3850").Value = .Range("A3239:D3850").Value ' Convertir las fórmulas en valores
End With
' Cerrar el archivo sin guardar cambios
wb.Close SaveChanges:=True
' Obtener el siguiente archivo en la carpeta
fileName = Dir
Loop
' Cerrar la instancia de Excel Application
excelApp.Quit
Set excelApp = Nothing
' Habilitar actualizaciones de pantalla y cálculos automáticos
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "La operación se ha completado en todos los archivos de la carpeta.", vbInformation
End Sub
Macros suma abcd.xlsm