Macro para crear carpetas usando algún comando para evitar el error cuando ya existan

Hola a todos, estoy trabajando en un programa en vb y necesito crear una carpeta con el nombre de una celda, en esta carpeta, tengo que guardar una cierta cantidad de de hojas del mismo libro (esto lo tengo solucionado) el tema es que me arroja error cuando coincide que la nueva carpeta que quiero crear ya existe (el nombre se repite).

Por lo tanto, la ayuda que necesito es: algún código con el cual pueda crear la carpeta y me avise si es que ya existe o no.

Desde ya muchas gracias,

Como ejemplo estoy usando este código que me funciona perfecto pero me arroja error cuando se repite el nombre de la carpeta

MkDir ("d:\" & Hoja1.[a2])

Worksheets(2).Copy
ActiveWorkbook.SaveAs "d:\" & Hoja1.[a2] & "\" & ActiveSheet.Name
ActiveWorkbook.Close
Worksheets(3).Copy
ActiveWorkbook.SaveAs "d:\" & Hoja1.[a2] & "\" & ActiveSheet.Name
ActiveWorkbook.Close
Application.ScreenUpdating = False

2 Respuestas

Respuesta
1

Con la instrucción para saber si existe una carpeta:

If Dir("d:\" & Hoja1.[a2], vbDirectory) = "" Then
    MkDir ("d:\" & Hoja1.[a2])
    Worksheets(2).Copy
    ActiveWorkbook.SaveAs "d:\" & Hoja1.[a2] & "\" & ActiveSheet.Name
    ActiveWorkbook.Close
    Worksheets(3).Copy
    ActiveWorkbook.SaveAs "d:\" & Hoja1.[a2] & "\" & ActiveSheet.Name
    ActiveWorkbook.Close
    Application.ScreenUpdating = False
Else
    MsgBox "La carpeta ya existe", vbcritical, "CREAR CARPETA"
End If
Respuesta
1

El orden de las instrucciones sería este:

On Error goto yaesta
MkDir ("d:\" & Hoja1.[a2])
On Error goto 0
Worksheets(2).Copy
ActiveWorkbook.SaveAs "d:\" & Hoja1.[a2] & "\" & ActiveSheet.Name
ActiveWorkbook.Close
Worksheets(3).Copy
ActiveWorkbook.SaveAs "d:\" & Hoja1.[a2] & "\" & ActiveSheet.Name
ActiveWorkbook.Close
Application.ScreenUpdating = False
'
'cuando terminen tus instrucciones se sale
Exit Sub
yaesta:
Msgbox "La carpeta ya existe.",,"ERROR"
End Sub

El desvío se hace al final. Si por alguna razón debe continuar en otra sección de tu código, antes del End Sub le colocás: GoTo .... y la referencia.

PD) En mi sitio podrás encontrar manuales VBA. Un cap dedicado al control de errores.

Sdos y si esto resuelve tu consulta no olvides valorarla y finalizarla.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas