siempre para otro misma macro libro hoja guardar especifico ejecutar cuando cerrar cambios blanco automaticamente archivo abro abrir abre excel vba excel-vba automation userform

para - ejecutar macro automaticamente al abrir excel



Excel VBA Abrir el libro de trabajo, realizar acciones, guardar como, cerrar (2)

Esta pregunta ha sido editada debido a los extensos comentarios y actualizaciones de las respuestas propuestas.

Como se solicita aquí, está el módulo 13;

Sub SaveInFormat() Application.DisplayAlerts = False Workbooks.Application.ActiveWorkbook.SaveAs Filename:="C:/Documents and Settings/jammil/Desktop/AutoFinance/ProjectControl/Data/" & Format(Date, "yyyymm") & "DB" & ".xlsx", leFormat:=51 Application.DisplayAlerts = True End Sub

También hay problemas con el manejo de errores, sé que me he equivocado con él, pero estoy más interesado en arreglar la función de cierre en el momento antes de entrar en ella. Aquí está el código de manejo de errores que necesita un poco de trabajo

Sub test() Dim wk As String, yr As String, fname As String, fpath As String Dim owb As Workbook wk = ComboBox1.Value yr = ComboBox2.Value fname = yr & "W" & wk fpath = "C:/Documents and Settings/jammil/Desktop/AutoFinance/ProjectControl/Data" owb = Application.Workbooks.Open(fpath & "/" & fname) On Error GoTo ErrorHandler: ErrorHandler: If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then Exit Sub Else Call Clear ''Do Some Stuff Call Module13.SaveInFormat owb.Close

este es su código de prueba más mi cambio de la ruta y el nombre del archivo


Después de la discusión publicando la respuesta actualizada:

Option Explicit Sub test() Dim wk As String, yr As String Dim fname As String, fpath As String Dim owb As Workbook With Application .DisplayAlerts = False .ScreenUpdating = False .EnableEvents = False End With wk = ComboBox1.Value yr = ComboBox2.Value fname = yr & "W" & wk fpath = "C:/Documents and Settings/jammil/Desktop/AutoFinance/ProjectControl/Data" On Error GoTo ErrorHandler Set owb = Application.Workbooks.Open(fpath & "/" & fname) ''Do Some Stuff With owb .SaveAs fpath & Format(Date, "yyyymm") & "DB" & ".xlsx", 51 .Close End With With Application .DisplayAlerts = True .ScreenUpdating = True .EnableEvents = True End With Exit Sub ErrorHandler: If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then Else: Call Clear End Sub

Manejo de errores:

Podría intentar algo como esto para detectar un error específico:

On Error Resume Next Set owb = Application.Workbooks.Open(fpath & "/" & fname) If Err.Number = 1004 Then GoTo FileNotFound Else End If ... Exit Sub FileNotFound: If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then Else: Call Clear


Trataré de responder varias cosas diferentes, sin embargo, es posible que mi contribución no cubra todas sus preguntas. Tal vez varios de nosotros podemos tomar diferentes partes de esto. Sin embargo, esta información debería ser útil para usted. Aquí vamos..

Abrir un archivo separado:

ChDir "[Path here]" ''get into the right folder here Workbooks.Open Filename:= "[Path here]" ''include the filename in this path ''copy data into current workbook or whatever you want here ActiveWindow.Close ''closes out the file

Apertura de un archivo con fecha especificada si existe:

No estoy seguro de cómo buscar en su directorio para ver si existe un archivo, pero en mi caso no me molestaría en buscarlo, solo trataría de abrirlo y poner a prueba algún error para que, si no lo hace ''t exist entonces mostrar este mensaje o hacer xyz.

Algunas declaraciones de comprobación de errores comunes:

On Error Resume Next ''if error occurs continues on to the next line (ignores it) ChDir "[Path here]" Workbooks.Open Filename:= "[Path here]" ''try to open file here

O (mejor opción):

si no existe, muestre un cuadro de mensaje o un cuadro de diálogo para decir "el archivo no existe, ¿le gustaría crear uno nuevo?

lo más probable es que desee utilizar el GoTo ErrorHandler muestra a continuación para lograr esto

On Error GoTo ErrorHandler: ChDir "[Path here]" Workbooks.Open Filename:= "[Path here]" ''try to open file here ErrorHandler: ''Display error message or any code you want to run on error here

Mucha más información sobre el manejo de errores aquí: http://www.cpearson.com/excel/errorhandling.htm

Además, si desea obtener más información o necesita saber más en general en VBA, recomendaría el sitio de Siddharth Rout, tiene muchos tutoriales y códigos de ejemplo aquí: http://www.siddharthrout.com/vb-dot-net-and- sobresalir/

¡Espero que esto ayude!

El ejemplo sobre cómo asegurar el código de error no se ejecuta TODAS LAS veces:

Si depura a través del código sin la Exit Sub ANTES del manejador de errores, pronto se dará cuenta de que el controlador de errores se ejecutará cada vez que ocurra, si hay un error o no. El enlace debajo del código muestra una respuesta previa a esta pregunta.

Sub Macro On Error GoTo ErrorHandler: ChDir "[Path here]" Workbooks.Open Filename:= "[Path here]" ''try to open file here Exit Sub ''Code will exit BEFORE ErrorHandler if everything goes smoothly ''Otherwise, on error, ErrorHandler will be run ErrorHandler: ''Display error message or any code you want to run on error here End Sub

Además, mira esta otra pregunta en la que necesitas más referencia sobre cómo funciona esto: el bloque goto no funciona VBA