Hola Dante, gracias por tus comentarios.
Tienes toda la razón, tal ves no lo estoy haciendo de la mejor forma, pero esa fue la manera que encontré y que me funciono. Me gustaría saber como podría hacer mi código más eficiente, simple y funcional. Te comento que lo que pretendo hacer es copiar y pegar carpetas de diferentes direcciones mediante 1 botón que lo haga de forma masiva (Utiliznado Goto).
Este es el código que manejo actualmente:
Dim fso As Scripting.FileSystemObject
Sub Actualizar_ElementoB()
If MsgBox("El Proceso de actualización puede tardar minutos ", vbQuestion + vbOKCancel, " ") = vbCancel Then Exit Sub
'Declaro los GoTo para que vaya a cada uno.
GoTo 201
GoTo 201
GoTo 202
GoTo 203
GoTo 204
On Error Resume Next
'Ingreso la ruta donde tengo datos oficiales "Privado" y los quiero pasar a otra carpeta donde se llama "Publico", en este caso solo es para la carpeta "01_Procedimiento" y así tengo para diferentes carpetas (capacitación, avance y seguimiento y análisis de riesgo), por eso es que manejo muchos GoTo, porque quiero que vaya a cada uno y haga el copiado de la carpeta especifica (este ejemplo es de 4 GoTo pero tengo más de 100).
201 Dim rutaEle2_Pro As String
Set fso = CreateObject("Scripting.FileSystemObject")
rutaEle2_Pro = "C:\Privado\Elemento_2\00_Elemento_2\01_Procedimiento"
If fso.FolderExists("C:\Publico\Elemento_2\00_Elemento_2\01_Procedimiento") = True Then
fso.DeleteFolder "C:\Publico\Elemento_2\00_Elemento_2\01_Procedimiento", True
fso.CopyFolder rutaEle2_Pro, "C:\Publico\Elemento_2\00_Elemento_2\", True
Else
fso.CopyFolder rutaEle2_Pro, "C:\Publico\Elemento_2\00_Elemento_2\", True
End If
'Instruccion para GoTo 202
202 Dim rutaEle2_Cap As String
Set fso = CreateObject("Scripting.FileSystemObject")
rutaEle2_Cap = "C:\Privado\Elemento_2\00_Elemento_2\02_Capacitacionl"
If fso.FolderExists("C:\Publico\Elemento_2\00_Elemento_2\02_Capacitacion") = True Then
fso.DeleteFolder "C:\Publico\Elemento_2\00_Elemento_2\02_Capacitacion", True
fso.CopyFolder rutaEle2_Cap, "C:\Publico\Elemento_2\00_Elemento_2\", True
Else
fso.CopyFolder rutaEle2_Cap, "C:\Publico\Elemento_2\00_Elemento_2\", True
End If
'Intruccion para Goto 203
203 Dim rutaEle2_Avan As String
Set fso = CreateObject("Scripting.FileSystemObject")
rutaEle2_Avan = "C:\Privado\Elemento_2\00_Elemento_2\07_Avance_Seguimiento"
If fso.FolderExists("C:\Publico\Elemento_2\00_Elemento_2\07_Avance_Seguimiento") = True Then
fso.DeleteFolder "C:\Publico\Elemento_2\00_Elemento_2\07_Avance_Seguimiento", True
fso.CopyFolder rutaEle2_Avan, "C:\Publico\Elemento_2\00_Elemento_2\", True
Else
fso.CopyFolder rutaEle2_Avan, "C:\Publico\Elemento_2\00_Elemento_2\", True
End If
'Intruccion para Goto 204
204 Dim rutaEle2_Ries As String
Set fso = CreateObject("Scripting.FileSystemObject")
rutaEle2_Ries = "C:\Privado\Elemento_2\00_Elemento_2\11_Analisis_Riesgo"
If fso.FolderExists("C:\Publico\Elemento_2\00_Elemento_2\11_Analisis_Riesgo") = True Then
fso.DeleteFolder "C:\Publico\Elemento_2\00_Elemento_2\11_Analisis_Riesgo", True
fso.CopyFolder rutaEle2_Ries, "C:\Publico\Elemento_2\00_Elemento_2\", True
Else
fso.CopyFolder rutaEle2_Ries, "C:\Publico\Elemento_2\00_Elemento_2\", True
End If
MsgBox "Proceso de actualización satisfactorio", vbInformation, "Carpeta actualizada"
End Sub