Macro Excel que borra el archivo actual guardando un dato en una tabla de otro archivo
Tengo una hoja con macros para hacer facturas. Tengo varios botones que hacen diversas funciones, he intentado crear uno nuevo para borrar el archivo actual y la secuencia es la siguiente: 1º guarda el dato de una celda en una tabla de otro libro y cierra dicho libro, 2º guarda el archivo con otro nombre y en otra ubicación, limpiando todas las celdas (para usarlo de comodín), 3º borra el archivo que me interesa y cierra excel.
El problema es que al pulsar el botón para que ejecute toda la secuencia, excel se bloquea y tengo que terminar el proceso.
Uso varios SUB que escribí para otros botones y que en ellos funcionan perfectamente, pero he podido comprobar que, por ejemplo el que me limpia de contenido la hoja, en el botón de borrar archivo no me fuciona bien. Voy a intentar detallarlo todo lo mejor posible porque sé que es un poco complejo.
Boton:
'Borra la factura actual y guarda el numero de dicha factura en un listado, 'para usarlo en la siguiente factura nueva Sub CommandButton1_Click() Nlibro = ActiveWorkbook.Name Call GUARDAR_NUM_FACTURA Call VACIAR Call GUARDAR_BORRAR Call BORRAR_LIBRO(Nlibro) Application.Quit End Sub
Ahora detallo cada una de las llamadas que hago:
Sub GUARDAR_NUM_FACTURA() Application.ScreenUpdating = False FacturaUltima = Range("H5") 'Abrir la lista y comprobar si la primera celda está vacía Set LibroRegistro = Workbooks.Open("C:\Users\Dani\Google Drive\OTROS\APP FACTURAS\FACTURAS PENDIENTES.xlsm") LibroRegistro.Activate 'Si la celda está vacía, guardar el número ahi. Si no está vacía, pasar a la siguiente celda y volver a comprobar Call PRIMERA_VACIA ActiveCell.Value = FacturaUltima LibroRegistro.Save LibroRegistro.Close Set LibroRegistro = Nothing Application.ScreenUpdating = True End Sub
Sub PRIMERA_VACIA() If Range("A2").Value = Empty Then Range("A2").Select Else ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select End If End Sub
Este "Sub VACIAR" lo uso con otro botón y funciona perfectamente, hace lo que tiene que hacer, pero con este otro botón el excel se queda pillado antes de que termine la secuencia de borrar:
Sub VACIAR() Hoja1.CheckBox1.Value = False Hoja1.CheckBox2.Value = False Range("K7:N8").Select Selection.ClearContents Range("E9:N14").Select Selection.ClearContents Range("A7").Value = "Número" Range("D7").Value = "Nombre" Range("N6").Value = "0" Range("A9").Value = "MES" Range("L5").Value = Empty Range("A11").Value = Empty Range("A13").Value = Empty Range("E9").Select End Sub
Sub GUARDAR_BORRAR() 'Application.DisplayAlerts = False ruta = "C:\Users\Dani\Google Drive\OTROS\APP FACTURAS\" ActiveWorkbook.SaveAs Filename:=ruta & "BORRAR.xlsm", FileFormat:=52 'Application.DisplayAlerts = True End Sub
Sub BORRAR_LIBRO(Nlibro) Kill ("C:\Users\Dani\Google Drive\FACTURAS\" & Nlibro) End Sub
Los Sub GUARDAR_BORRAR y BORRAR_LIBRO los uso en procesos de otros botones y funcionan perfectamente.
El único que he creado para este botoón es el Sub GUARDAR_NUM_FACTURA. El fallo tiene que estar en este o en la secuencia del botón (son los dos primeros cuadros de código). O quizas en el planteamiento. Ya que tanto el VACIAR, PRIMERA_VACIA, GUARDAR_BORRAR y BORRAR_LIBRO los uso para otros cometidos en la misma hoja y funcionan bien.
Se que puede resultar algo complejo de entender, pero si teneis alguna solución os lo agradecería.